Module: Polyamorous::JoinAssociationExtensions
- Includes:
- SwappingReflectionClass
- Defined in:
- lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb,
lib/polyamorous/activerecord_5.2.0_ruby_2/join_association.rb,
lib/polyamorous/activerecord_5.2.1_ruby_2/join_association.rb
Class Method Summary
collapse
Instance Method Summary
collapse
#swapping_reflection_klass
Class Method Details
.prepended(base) ⇒ Object
6
7
8
|
# File 'lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb', line 6
def self.prepended(base)
base.class_eval { attr_reader :join_type }
end
|
Instance Method Details
#build_constraint(klass, table, key, foreign_table, foreign_key) ⇒ Object
23
24
25
26
27
28
29
30
|
# File 'lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb', line 23
def build_constraint(klass, table, key, foreign_table, foreign_key)
if reflection.polymorphic?
super(klass, table, key, foreign_table, foreign_key)
.and(foreign_table[reflection.foreign_type].eq(reflection.klass.name))
else
super(klass, table, key, foreign_table, foreign_key)
end
end
|
#initialize(reflection, children, polymorphic_class = nil, join_type = Arel::Nodes::InnerJoin) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb', line 10
def initialize(reflection, children, polymorphic_class = nil,
join_type = Arel::Nodes::InnerJoin)
@join_type = join_type
if polymorphic_class && ::ActiveRecord::Base > polymorphic_class
swapping_reflection_klass(reflection, polymorphic_class) do |reflection|
super(reflection, children)
self.reflection.options[:polymorphic] = true
end
else
super(reflection, children)
end
end
|