0

:category 属性を持つ Story モデルがあります。ストーリーもタッグと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