我有一个多态关联: 跟随来自rails guide的rails关联模型图片并假设员工是我的内容和图片是我的翻译我需要执行过滤关联。
class Content < ApplicationRecord
has_many :translations,:as => :transl
end
class Translation < ApplicationRecord
enum idiom: [ :EN, :NO]
belongs_to :transl, :polymorphic => true
end
因此,我希望有一个json与我的内容,但只有特定的习惯用法,我有这样的东西:
Content.all.to_json(:include => {:translations => {:only => [:text, :idiom],:where =>{idiom: "EN"}}})
我尝试创建一个包含在to_json中的方法,但其中的方法只是getter。
我试过也离开了外连接,但它也不起作用:
SELECT "contents".* FROM "contents" LEFT OUTER JOIN "translations" ON "translations"."transl_id" = "contents"."id" WHERE (translations.idiom=0)
要工作,我必须执行原始查询,强制从左侧获得一些结果我认为可能有一些内容没有翻译,例如:
SELECT "contents".* FROM "contents" LEFT OUTER JOIN "translations" ON "contents"."id" = "translations"."transl_id" **OR "contents"."id" >0** WHERE (translations.idiom="EN")
有更好的方法吗?
答案 0 :(得分:0)
SELECT“contents”。 FROM“contents”LEFT OUTER JOIN“translations”ON“contents”。“id”=“translations”。“transl_id” OR“contents”。“ id“&gt; 0 WHERE(translations.idiom =”EN“)*
可以是===&gt;
@lang="EN"
Content.where(:id > 0).includes(:translations).where({:translations =>{:idiom=>@lang}})