module Resonance::ClassMethods

Public Instance Methods

resonate(source, target: nil, action: nil, foreign_key: {}) click to toggle source
# File lib/resonance.rb, line 7
def resonate(source, target: nil, action: nil, foreign_key: {})
  roles = [source, target, action]

  roles.each do |role|
    if role.nil?
      raise Resonance::ArgumentError, 'Passed argument is not a valid'
    end
  end

  foreign_key.tap do |key|
    key[:source] = :"#{source}_id"        if key[:source].nil?
    key[:target] = :"target_#{target}_id" if key[:target].nil?
  end

  Resonance.define(*roles.map(&:to_s), foreign_key)
end