我曾經遇到過在活動記錄某些異常行爲(3.2.13):ActiveRecord在應用範圍時的條件合併當前?
上有我的模型一個簡單的範圍:
class User < ActiveRecord::Base
scope :verified, lambda { where('verified = 1') }
end
這可以在單獨使用罰款:
User.verified.to_sql
#=> "SELECT \"users\".* FROM \"users\" WHERE (verified = 1)"
當我串聯where
-clauses,他們是and
ED預期:
User.where(company_id: 1).where(company_id: 2).to_sql
"SELECT \"users\".* FROM \"users\" WHERE \"users\".\"company_id\" = 1 AND \"users\".\"company_id\" = 2"
問題:
User.where(company_id: 1).where(company_id: 2).verified.to_sql
"SELECT \"users\".* FROM \"users\" WHERE \"users\".\"company_id\" = 2 AND (verified = 1)"
如何在應用範圍:
然而,當我鏈接一個範圍,我的第一個WHERE子句是核爆,最後一個在合併勝與現有條件的關係?
(這些現有條件下已經通過康康舞的load_and_authorize_resource
成立,所以我不能只是應用這些where
條款之後將我的討論範圍)。
「nuking」似乎發生在'merge':http://apidock.com/rails/ActiveRecord/SpawnMethods/merge ...這似乎在使用'scope'時應用:http:// apidock。 com/rails/ActiveRecord/Scoping/Named/ClassMethods/scope – crispy