Class: Dart::ManyToManyAssociation

Inherits:
Association show all
Defined in:
lib/dart/core/many_to_many_association.rb

Direct Known Subclasses

Database::ManyToManyAssociation

Constant Summary

Constants inherited from Association

Association::MANY_TO_MANY_TYPE, Association::MANY_TO_ONE_TYPE, Association::ONE_TO_MANY_TYPE, Association::ONE_TO_ONE_TYPE

Instance Attribute Summary

Attributes inherited from Association

#model_class, #name, #scope

Instance Method Summary collapse

Methods inherited from Association

#set_name!, #to_one?

Constructor Details

#initialize(left_ass, right_ass) ⇒ ManyToManyAssociation

for an m2m association on users we’d pass in:

left_ass:    badge_users.user_id -> users.id
right_ass: badge_users.badge_id -> badges.id

>

many_to_many :badges, join_table: :badge_users


13
14
15
# File 'lib/dart/core/many_to_many_association.rb', line 13

def initialize(left_ass, right_ass)
  @left_ass, @right_ass = left_ass, right_ass
end

Instance Method Details

#associated_tableObject



25
26
27
# File 'lib/dart/core/many_to_many_association.rb', line 25

def associated_table
  right_ass.parent_table
end

#eql?(other) ⇒ Boolean Also known as: ==

Returns:

  • (Boolean)


41
42
43
# File 'lib/dart/core/many_to_many_association.rb', line 41

def eql?(other)
  join_associations.eql? other.join_associations
end

#hashObject



46
47
48
# File 'lib/dart/core/many_to_many_association.rb', line 46

def hash
  join_associations.hash
end

#join_associationsObject



17
18
19
# File 'lib/dart/core/many_to_many_association.rb', line 17

def join_associations
  [left_ass, right_ass]
end

#join_tableObject



29
30
31
# File 'lib/dart/core/many_to_many_association.rb', line 29

def join_table
  right_ass.child_table
end

#left_foreign_keyObject



33
34
35
# File 'lib/dart/core/many_to_many_association.rb', line 33

def left_foreign_key
  left_ass.foreign_key
end

#right_foreign_keyObject



37
38
39
# File 'lib/dart/core/many_to_many_association.rb', line 37

def right_foreign_key
  right_ass.foreign_key
end

#to_sObject



50
51
52
# File 'lib/dart/core/many_to_many_association.rb', line 50

def to_s
  "#{self.class}\n    left:#{left_ass}\n    right:#{right_ass}"
end

#typeObject



21
22
23
# File 'lib/dart/core/many_to_many_association.rb', line 21

def type
  MANY_TO_MANY_TYPE
end