1

コントローラーにメソッドがあるとします。

 def my_find(is_published, count)
    items = Idea.where(published: is_published)
    #......
 end

追加のフィルター引数を渡したい場合があります

 def my_find(is_published, count, some_extra_filter = nil)
    items = Idea.where(published: is_published) #.where (some_extra_filter)
    #......
 end

wheresome_extra_filterは、lambdaまたは単純な sql "where"stringにすることができ、または "" にすることもできますnil

では、必要なものを取得するにはどうすれば連結 できますか?.where(published: is_published)where (some_extra_filter)

4

1 に答える 1

2

これは、スコープを使用すると実際には非常に簡単です。

def my_find
  @items = Idea.scoped
  @items = @items.where(published: is_published) unless is_published.nil?
  @items = @items.where(other: other_param) if other_params < 10
  # etc, etc
end
于 2012-12-21T06:11:50.013 に答える