13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/intermodal/concerns/models/has_parent_resource.rb', line 13
def parent_resource(resource, options = {})
parent_resource_scope = "by_#{resource}_id"
parent_table_name = options[:parent_table_name] || resource.to_s.pluralize
instance_eval do
if options[:class_name]
belongs_to resource, :class_name => options[:class_name]
else
belongs_to resource
end
validates_presence_of resource
scope parent_resource_scope, lambda { |id| where("#{resource}_id" => id) }
scope "by_#{resource}", lambda { |parent| send(parent_resource_scope, parent.id) }
scope "by_parent_id", lambda { |id| send(parent_resource_scope, id) }
scope :by_parent, lambda { |parent| by_parent_id(parent.id) }
scope :by_account_id, lambda { |a_id| joins(resource).where( parent_table_name => { :account_id => a_id } ) }
scope :by_account, lambda { |a| by_account_id(a.id) }
end
end
|