gpt4 book ai didi

ruby-on-rails - 检查模型实例是否在rails的named_scope内

转载 作者:行者123 更新时间:2023-12-04 04:54:30 26 4
gpt4 key购买 nike

假设我有一个命名范围:

class Foo < ActiveRecord::Base
named_scope :bar, :conditions => 'some_field = 1'
end

这对查询非常有用,并且我定义了一堆有用的named_scopes。我想要的是能够做到这一点:
f = Foo.find(:first)
f.some_field = 1
f.is_bar? #=> true

酒吧?'如果模型实例在指定范围内,则方法将简单地返回true或false。无论如何,不​​编写“is_bar”就可以做到这一点吗?即使我已经编写了一种很好的方法来检查是否存在“is_bar?”方法如果我没记错的话,DRY很好,所以任何帮助将不胜感激/

最佳答案

您可以在命名作用域上调用exists?方法,该方法将查询数据库以查看给定记录是否存在那些条件。

Foo.bar.exists?(f)

但是,如果您更改了 f上的属性并且未将其保存到数据库中,则此方法将不起作用。这是因为命名作用域条件是SQL,所以必须在此处进行检查。尝试转换为Ruby if条件很麻烦,尤其是在更复杂的情况下。

关于ruby-on-rails - 检查模型实例是否在rails的named_scope内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1255815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com