Имеются модели
class Category < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
belongs_to :category
has_many :product_storages
has_many :storages, through: :product_storages
end
class Storage < ActiveRecord::Base
has_many :product_storages
has_many :products, through: :product_storages
end
class ProductStorage < ActiveRecord::Base
belongs_to :product
belongs_to :storage
end
В связующей таблице данные storage_id, product_id, amount, т.е. количество товара на каждом складе, при чем один и тот же товар может находиться на разных складах.
Вопрос в следующем, как правильно получить такие данные не прибегая к find_by_sql, т.е. средствами ActiveRecord основанных на связях?
Может /надо что-то еще проделать с моделями или я что-то не так понимаю, или буду рад информации где почитать с примерами про сложные связи между таблицами в RoR ?
select products.id, products.name,product_storages.amount,product_storages.storage_id from products
inner join product_storages on product_storages.product_id = products.id
inner join categories on categories.id = products.category_id
where product_storages.storage_id=1 and amount >0 and categories.id =1
select products.id, products.name, product_storages.amount,product_storages.storage_id from products
inner join product_storages on product_storages.product_id = products.id
where product_storages.storage_id = 1 and amount >0
select products.id, products.name,SUM( product_storages.amount),product_storages.storage_id from products
inner join product_storages on product_storages.product_id = products.id
where product_storages.storage_id <>1 and amount >0
group by products.id