Module: Symmetry::ActiveRecord

Defined in:
lib/symmetry/active_record.rb

Instance Method Summary collapse

Instance Method Details

#symmetric_relationship(relationship_name, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/symmetry/active_record.rb', line 4

def symmetric_relationship(relationship_name, options = {})
  options.assert_valid_keys(:polymorphic_relationship_name)

  relationship_name_singular = relationship_name.to_s.singularize
  polymorphic_relationship_name = (options[:polymorphic_relationship_name].presence || "#{relationship_name_singular}_relationships").to_sym

  has_many polymorphic_relationship_name, -> { where(relationship_name: relationship_name ) }, class_name: "SymmetricRelationship", as: :owner, dependent: :destroy
  has_many relationship_name, through: polymorphic_relationship_name, as: :relation, source: :relation, source_type: self.name
end