module ActsInRelation::Core::ClassMethods
Public Instance Methods
acts_in_relation(**args)
click to toggle source
DSL called to a subclass of ActiveRecord::Base
@param [Hash] args Define relation with :role, :action, :source, :target or :self.
@example Define self relation
class User < ActiveRecord::Base acts_in_relation role: :self, action: [:follow, :block] end class Follow < ActiveRecord::Base acts_in_relation role: :action, self: :user end class Block < ActiveRecord::Base acts_in_relation role: :action, self: :user end
@example Define relation of each models
class User < ActiveRecord::Base acts_in_relation role: :source, target: :post, action: :like end class Post < ActiveRecord::Base acts_in_relation role: :target, source: :user, action: :like end class Like < ActiveRecord::Base acts_in_relation role: :action, source: :user, target: :post end
# File lib/acts_in_relation/core.rb, line 39 def acts_in_relation(**args) @args = args case @args[:role] when nil raise ActsInRelation::MissingRoleError when :source define_source when :target define_target when :action define_action when :self define_source define_target else raise ActsInRelation::UnknownRoleError, @args[:role] end end
Private Instance Methods
define_action()
click to toggle source
# File lib/acts_in_relation/core.rb, line 69 def define_action ActsInRelation::Roles::Action.new(@args).define end
define_source()
click to toggle source
# File lib/acts_in_relation/core.rb, line 61 def define_source ActsInRelation::Roles::Source.new(@args).define end
define_target()
click to toggle source
# File lib/acts_in_relation/core.rb, line 65 def define_target ActsInRelation::Roles::Target.new(@args).define end