Para aquellos de ustedes que conocen los rieles y SQL bien, estoy buscando alguna buena información que pueda señalarme. Mi consulta es muy similar al ejemplo los 'Joining anidadas de las asociaciones sobre esta sección - http://guides.rubyonrails.org/active_record_querying.html#using-array-hash-of-named-associationsUnirse a asociaciones anidadas, nivel múltiple
Mis modelos (abreviado) son los siguientes,
User has_many :products # User is 'great-grandparent'
Product has_many :posts # Product is grandparent #1
Event has_many :posts # Event is grandparent #2
Post belongs_to :event
Post belongs_to :product
Post has_many :orders # Post is parent
Order belongs_to :post # Order is great-grandchild, grandchild, & child
Quiero recoger las órdenes de un evento para un usuario (el vendedor), y aquí está mi mejor versión.
class Order < ActiveRecord::Base
def self.collect_for_seller_and_event(user_id, event_id)
self.joins(:post => [{:product => :user }, :event]).where(:post => [{:product => {:user_id => user_id}}, {:event_id => event_id}])
end
¿Cómo debería ser esta unión?
¿Debo dividir esto en alcances en los diversos modelos en la cadena?
Sólo para demostrar que tengo un conocimiento básico aquí, he sido capaz de conseguir mi primer trabajo anidada tabla de unión va (estoy bastante entusiasmado con este logro)
BuyerFeedback
belongs_to :order
def self.from_past_events
self.joins(:order => {:post => :event}).where(:order => {:post => {:event => {:date.lt => Date.today}}})
end