如何使用基于另一个表的条件查询ActiveRecord表?

时间:2015-01-30 22:33:34

标签: ruby-on-rails activerecord

我有两个模型 - Blog和BlogTag。博客has_many:blog_tags和BlogTag belongs_to:blog:

blog.rb

has_many :blog_tags

blog_Tag.rb

belongs_to :blog

我想查询数据库,根据用户在表单字段中输入的内容,选择blog_tags表中具有匹配标签的所有博客。像这样:

Blog.where(blog_tags contain [array of tags])

有没有办法用ActiveRecord做到这一点?

2 个答案:

答案 0 :(得分:0)

假设BlogTag有一列name

Blog.joins(:blog_tags).where(blog_tags: { name: [array of tags] }).uniq

这仍然会返回博客,但只会返回博客标签,其博客标签的名称位于数组中。

答案 1 :(得分:0)

另一种解决方法是将/*FONTS*/ @font-face { font-family: MyriadProCond; src: url(include/MyriadProCondRegular/MyriadProCondRegular.ttf); /* Путь к файлу со шрифтом */ src: url(include/MyriadProCondRegular/MyriadProCondRegular.woff); src: url(include/MyriadProCondRegular/MyriadProCondRegular.otf); src: url(include/MyriadProCondRegular/MyriadPro-Cond.eot); } *, body, p,h3,h4 { font-family: 'MyriadProCond', Arial, sans-serif; color: #fff; } 关系传递给BlogTag范围。

Blog

因此,ActiveRecord将构造一个子查询

而不是Blog.where(id: BlogTag.where(name: tags).select(:blog_id))
JOIN