尝试创建包含关联的复杂AR查询

时间:2013-04-05 17:24:22

标签: ruby-on-rails-3 activerecord arel

我有一个具有:category属性的Story模型。故事也与HAGTM有关系。

class Tag < ActiveRecord::Base

    has_and_belongs_to_many :stories, :uniq => true

    validates   :name,   :presence => true
    validates   :creator_id,  :presence => true

end

class Story < ActiveRecord::Base

  attr_accessible :title, :category

  belongs_to    :user
  has_and_belongs_to_many :tags, :uniq => true
end

我想搜索(i)传递category_array中的类别或(ii)传递tag_array中的关联tag.name的故事。

第一部分是直截了当的:

Story.where(:category => category_array)

这是伸展我的能力的第二部分。任何帮助将不胜感激!

更新

这解决了这个问题并且非常容易阅读,但这是最好的方法吗?顺便说一下,我曾经想过使用arel,但我仍然不明白我将如何在连接表中使用arel:

Story.includes(:tags).where("tags.name in (tag_array) OR category in (cat_array)")

1 个答案:

答案 0 :(得分:0)

这解决了这个问题并且非常容易阅读,但这是最好的方法吗?

Story.includes(:tags).where("tags.name in (tag_array) OR category in (cat_array)")