我有这样的代码:
class Item < ActiveRecord::Base
class << self
def for_category(c)
if c
return where(:category_id => c.id)
else
return self
end
end
end
end
我需要这样调用它:
Item.where("created_at > ?", Time.now - 1.week).for_category(@category)
@category 可以为 null 也可以不为 null。在类别为空的情况下,我希望该方法简单地通过并返回不变的关系。当然,return self 只是返回 Item 类。
执行此操作的正确方法是什么?
最佳答案
您是否试图返回作用域(而不是类本身)以进行进一步的作用域操作?如果是这样,那么像下面这样的东西应该可以工作:
class Item < ActiveRecord::Base
class << self
def for_category(c)
if c
return where(:category_id => c.id)
else
return scoped
end
end
end
end
HTH
关于ruby-on-rails - 如何从类方法返回未更改的 AR 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501703/