class AssociationBuilder::HasManyThroughActiveResources
Public Class Methods
build(model, table_name, options)
click to toggle source
# 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