module Dynabute::Joins::Dynabutable::ClassMethods
Public Instance Methods
join_to_fields(fields)
click to toggle source
# File lib/dynabute/joins.rb, line 14 def join_to_fields(fields) fields.inject(self) do |me, field| me.joins(join_source_for_field(field)) end end
Private Instance Methods
dynabutee_table()
click to toggle source
# File lib/dynabute/joins.rb, line 32 def dynabutee_table arel_table end
join_source_for_field(field)
click to toggle source
# File lib/dynabute/joins.rb, line 21 def join_source_for_field(field) value_table = field.value_class.arel_table.alias(field.joined_alias) dynabutee_table .join(value_table, Arel::Nodes::OuterJoin) .on( dynabutee_table[:id].eq(value_table[:dynabutable_id]).and( value_table[:dynabutable_type].eq(self.to_s)).and( value_table[:field_id].eq(field.id)) ).join_sources end