首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >globalize3 -查询已翻译的属性

globalize3 -查询已翻译的属性
EN

Stack Overflow用户
提问于 2014-10-15 13:05:06
回答 1查看 63关注 0票数 0

我有两个模型:

代码语言:javascript
复制
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查询:

代码语言:javascript
复制
SELECT "products".* FROM "products" 
INNER JOIN "genders" ON "genders"."id" = "products"."gender_id" 
WHERE "genders"."name" = 'male'`

但是我想我需要一个像这样的sql查询?

代码语言:javascript
复制
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呢?

EN

回答 1

Stack Overflow用户

发布于 2014-11-16 13:42:08

我相信,像Product.joins(gender: :translations).where(gender: { translations: { name: 'male' }})这样的东西应该能起到作用。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26374835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档