Class: SelfishAssociations::Association
- Inherits:
-
Object
- Object
- SelfishAssociations::Association
show all
- Defined in:
- lib/selfish_associations/associations/association.rb
Instance Method Summary
collapse
Constructor Details
#initialize(name, model, scope = nil, options = {}) ⇒ Association
Returns a new instance of Association.
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/selfish_associations/associations/association.rb', line 12
def initialize(name, model, scope = nil, options = {})
options = options.symbolize_keys
@name = name.to_s
@model = model
@foreign_class_name = (options[:class_name] || name.to_s.classify).to_s
@foreign_key = options[:foreign_key] == false ? false : (options[:foreign_key] || @model.name.foreign_key).to_sym
@scopes = []
add_scope(scope) if scope.present?
add_scope(foreign_key_scope) if @foreign_key.present?
validate
end
|
Instance Method Details
#create_for(instance) ⇒ Object
47
48
49
|
# File 'lib/selfish_associations/associations/association.rb', line 47
def create_for(instance)
foreign_class.create(instance_create_attributes(instance))
end
|
#foreign_class ⇒ Object
29
30
31
|
# File 'lib/selfish_associations/associations/association.rb', line 29
def foreign_class
@foreign_class ||= self.class.const_get(@foreign_class_name)
end
|
#initialize_for(instance) ⇒ Object
43
44
45
|
# File 'lib/selfish_associations/associations/association.rb', line 43
def initialize_for(instance)
foreign_class.new(instance_create_attributes(instance))
end
|
#inspect ⇒ Object
25
26
27
|
# File 'lib/selfish_associations/associations/association.rb', line 25
def inspect
"#<#{self.class}:#{self.object_id} @name=#{@name} @model=#{@model} @foreign_class=#{foreign_class} @foreign_key=#{@foreign_key}>"
end
|
#join ⇒ Object
33
34
35
36
37
|
# File 'lib/selfish_associations/associations/association.rb', line 33
def join
conditions = arelize_conditions(relation_reader.conditions_for_find)
arel_join = @model.arel_table.join(foreign_class.arel_table).on(conditions).join_sources
@model.joins(joins_for_find).joins(arel_join).merge(foreign_class.all)
end
|
#matches_for(instance) ⇒ Object
39
40
41
|
# File 'lib/selfish_associations/associations/association.rb', line 39
def matches_for(instance)
foreign_class.where(instance_find_conditions(instance))
end
|