globalize3-查询翻译后的属性



我有两种型号:

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呢?

我相信Product.joins(gender: :translations).where(gender: { translations: { name: 'male' }})应该有一些类似的东西。

joins(gender: :translations)是一个嵌套的内部联接。所以您加入了products->gendersgenders->gender_translations

where散列语法只是尝试生成SQL:where("gender_translations.prompt = 'male'")。如果散列语法不正确/对您不利,我会恢复到刚才提到的原始SQL。无论如何,它可以说更清楚!

最新更新