免责声明:我对 Rails 还比较陌生。
我的模型中有一个自定义方法,我想查询它。该方法称为“active?”,返回一个 bool 值。我真正想做的是创建以下形式的 ActiveRecord 查询:
Users.where(:active => true)
当然,当我按原样运行上述内容时,我得到一个“列不存在”,所以我的问题如下:
如何执行与上述相同的操作,但对于模型上的自定义方法而不是实际的数据库列?
最佳答案
而不是使用主动?方法,您将有一个范围来帮助查找匹配的项目。
类似这样的事情...
def self.active
joins(:parent_table).where(:archived => false).where("? BETWEEN parent_table.start_date AND parent_table.end_date ", Time.now)
end
而且,你应该能够做到这一点
def active?
User.active.exists?(self)
end
如果您想重用此范围进行实例测试。
关于ruby-on-rails - 如何基于自定义模型方法查询Rails/ActiveRecord模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702676/