我有一個Rails 3作用域,它排除了一個ID數組。Rails作用域對NOT IN值什麼都不做
什麼是最好的方式來編寫範圍,以便它在數組爲空並且仍然可鏈接時不執行任何操作?我現在有這一點,它的工作原理,但似乎有點做作:
scope :excluding_ids,
lambda {|ids| ids.empty? ? relation : where('id not in (?)', ids) }
如果我沒有「ids.empty關係:??」位,當id爲空,生成的SQL是
... ID not in (NULL) ...
這將永遠不會返回。所以像這樣:
Model.excluding_ids([]).where('id > 0')
返回沒有結果。
不客氣。 – 2011-04-01 22:24:26
感謝您的編輯。 (刪除我之前的評論,因爲我現在無法編輯它,所以出現錯誤) – tee 2011-04-01 22:35:25
啊,好多了!我給你的答案一個獨角獸。 – 2011-04-01 22:44:35