Rails scope that does nothing for NOT IN values

前端 未结 4 1935
北荒
北荒 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:22

    If the ids array is empty then don't return anything.

    scope :excluding_ids, lambda { |ids|
      where(['id NOT IN (?)', ids]) if ids.any?
    }
    

    The query will run without any additional constraints on the query if there are no ids.

提交回复
热议问题