例如:
def some_boolean_method?
# returns true or false
end
我想做这样的事情:User.where(some_boolean_method: true)
。这就是我如何使用实际列进行操作,但是如何使用方法来实现呢?
答案 0 :(得分:2)
你必须将它与select一起使用,因为这些方法是模型的抽象,所以这些方法在数据库中不可用。
User.where(...).select { |u| u if u.some_boolean_method }.reject(&:blank?)
或者:
User.select { |u| u if u.some_boolean_method }.reject(&:blank?)
假设方法 some_boolean_method 在用户实现中,或者至少它使用用户做出决定。
答案 1 :(得分:1)
您可以使用
User.all.select(&:some_boolean_method)
请注意,这会将所有用户从数据库加载到内存中,并仅保留some_boolean_method
返回true
的用户。如果您有太多用户(在这种情况下考虑使用find_each
),这可能会导致问题。