繁体   English   中英

在Rails中按关联模型的属性过滤

[英]Filtering by the attribute of an associated model in Rails

我在视图中使用以下行,该行输出电影的英语描述:

@film.descriptions.where(language_id: 38)

有没有办法不依赖于知道语言记录的ID来编写此代码? 我一直在搜索,但还没有自己弄清楚。 在这种情况下,英语描述的ID恰好是38,尽管我宁愿不对ID进行硬编码。

有一个电影模型,该模型具有多个描述,并且描述属语言。 语言模型具有“代码”属性(en,de等),似乎使用语言的代码而不是模型ID查找电影的描述会更干净。

谢谢!

是的,你可以这么做。

film模型编写辅助方法,例如

def language(code)
   Language.where(code:code).first.id
end

并获得电影描述为:

@film.descriptions.where(language_id: language('en'))

您可以按照以下方式尝试

@film.descriptions.joins(:language).where(language: {code: "en"})

它将返回说明语言带有“ en”代码的电影

重写如下:

Description.joins(:language)
  .where(film_id: @film, languages: {code: "en"})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM