Rails scope that does nothing for NOT IN values

前端 未结 4 1998
北荒
北荒 2021-02-13 22:53

I have a Rails 3 scope that excludes an array of ids.

What is the best way to write the scope so that it does nothing when the array is empty and is still chainable? I c

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-02-13 23:33

    How about the following? (It still checks for an empty array though, so if that's what you're trying to avoid it's not much of an improvement :)

    scope :excluding_ids,
         lambda {|ids| (ids.empty? && relation) || where('id not in (?)', ids) }
    

提交回复
热议问题