我的模型有这个范围
scope :supported, order("name").collect {|m| m.name}.join(", ")
它会抛出错误
NoMethodError: undefined method `includes_values' for "blah, blahblah":String
我在想这是因为我试图将一个字符串作为ActiveRecord对象返回,想一想如何修复它?实际上我已经在视图中使用了这段代码,但认为它在模型中可能更好,也许不是吗?
修改 将其移动到非范围类方法中
def supported
order("name").collect {|m| m.name}.join(", ")
end
这是一个相关的question,可以更好地阐明scope
与self
类方法之间的区别。
答案 0 :(得分:2)
你想要做什么?如果你想返回一个字符串,请使用类方法。如果你想定义一个可链接的ARel范围,我总是建议使用类方法,但有些人更喜欢通过scope
的“显式”方式。
def self.supported
order('name').to_a * ", "
end