[英]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.