我的任務是確定記錄子集的所有布爾屬性是否都是true. 使用后sum,我希望有一個類似的方法來處理布林值。但是,我找不到這樣的東西。
我覺得答案很有可能非常清晰、直接并且可以通過簡單的谷歌搜索獲得,但我想不出正確的短語來搜索它。
我正在努力實作的示例:
[
#<User id: 1, name: "John", arborist: true>,
#<User id: 2, name: "Ben", arborist: true>,
#<User id: 3, name: "Betty", arborist: false>,
]
應該回傳false
[
#<User id: 1, name: "John", arborist: true>,
#<User id: 2, name: "Ben", arborist: true>,
#<User id: 3, name: "Betty", arborist: true>,
]
應該回傳true
目前我正在使用count.
all_arborists? = ( User.count == User.where(arborist: true).count )
它讓我得到了結果,但我覺得它的意義超出了我的想象。
uj5u.com熱心網友回復:
您可以簡單地檢查資料庫中是否有一個非樹藝師:
all_arborists = !User.exists?(arborist: false)
您可以將其定義為類方法,rails magic 將使其在所有范圍內都可用:
class User
def self.all_arborists?
!exists?(arborist: false)
end
end
User.where(some_condition: foo).all_arborists?
uj5u.com熱心網友回復:
如果您已經將記錄加載到記憶體中,并且正在使用陣列,則可以使用 Ruby 的#all?方法:
all_arborists = records.all? { |r| r.arborist }
如果記錄在資料庫中并且您不想將它們加載到記憶體中,那么您需要一個 SQL 查詢,并且您嘗試的是正確的路徑:
non_arborists = User.where(some_condition: foo).where(arborist: false).count
all_arborists = non_arborists == 0
uj5u.com熱心網友回復:
使用:pluckUser 類上的方法獲取樹藝列值,然后使用陣列方法all?檢查所有值是否為真。
User.pluck(:arborist).all?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/472671.html
