0

我有一个具有 :category 属性的 Story 模型。Story 也与 Tag 建立了 HABTM 关系。

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)")
4

1 回答 1

0

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

Story.includes(:tags).where("tags.name in (tag_array) OR category in (cat_array)")
于 2013-04-17T21:25:27.407 回答