我有两个模型:
class Gender < ActiveRecord::Base
translates :name
has_many :products
end
class Product < ActiveRecord::Base
translates :description
belongs_to :gender
end在与globalize3集成之后,我不知道如何让连接的查询工作,例如:Product.joins(:gender).where(genders: { name: 'male' })
它生成这个sql查询:
SELECT "products".* FROM "products"
INNER JOIN "genders" ON "genders"."id" = "products"."gender_id"
WHERE "genders"."name" = 'male'`但是我想我需要一个像这样的sql查询?
SELECT * FROM products
INNER JOIN genders on genders.id = products.gender_id
INNER JOIN gender_translations on gender_translations.gender_id = genders.id
WHERE gender_translations.name = 'male';那么如何做与这个sql查询等价的rails呢?
发布于 2014-11-16 13:42:08
我相信,像Product.joins(gender: :translations).where(gender: { translations: { name: 'male' }})这样的东西应该能起到作用。
joins(gender: :translations)是一个嵌套的内连接。所以你加入了products-> genders和genders -> gender_translations。
where散列语法只是尝试生成SQL:where("gender_translations.prompt = 'male'")。如果散列语法不正确,我将恢复到刚才提到的原始SQL。无论如何,它可以说是更清晰的!
https://stackoverflow.com/questions/26374835
复制相似问题