1
モデルに検索メソッドを作成し、メソッドに渡された引数に基づいて条件を結合しようとしています。Rails:モデル内のメソッドチェーン
Item.search(args)
モデル:
def self.search(args = {})
include ActsAsTaggableOn # Tagging model for search
result = where("title LIKE ? OR description LIKE ? OR tags.name LIKE ?", "%#{args[:search]}%", "%#{args[:search]}%", "%#{args[:search]}%")
.joins("JOIN taggings ON taggings.taggable_id = items.id")
.joins("JOIN tags ON taggings.tag_id = tags.id")
# Categories
if args[:categories]
result.where(:category_id => args[:categories])
end
# Order
if args[:order] == "category"
result.joins(:categories).order("categories.title ASC")
else
result.order("title DESC")
end
# Pagination
result.paginate(:per_page => 10, :page => args[:page])
end
私がもしブロックを取り除くと直接その後チェーンを行う場合であっても、それはdoesnのしかし、何も初期の「場所」
コントローラ後の連鎖なかっますの仕事:
result = where(:foo => "bar")
result.order("name DESC")
...ちょうどどこを実行します。
アイデア?
ありがとうございます。
result = result.where(...)
たびに更新スコープになるために戻って再度割り当てる必要があります:あなたは何をすべき
ありがとうございます! – jmccartie