5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/active_resource_associatable/has_many_through_activeresources.rb', line 5
def self.build(model, table_name, options)
middle_table = options[:through].to_s
klass_name = table_name.to_s
model.class_eval do
define_method(klass_name) do
if self.is_a?(ActiveResource::Base)
associated_ids = middle_table.classify.constantize.where("#{model.element_name.gsub('_resource', '')}_id = ?", self.id).pluck("#{klass_name.singularize}_id".to_sym)
klass_name.classify.constantize.where(id: associated_ids)
elsif self.is_a?(ActiveRecord::Base)
associated_ids = middle_table.classify.constantize.where("#{model.table_name.singularize}_id = ?", self.id).pluck("#{klass_name.singularize}_id".to_sym)
options[:class_name].classify.constantize.find(:all, params:{id: associated_ids})
end
end
end
end
|