Rails 3范围未定义方法`includes_values`

时间:2011-09-30 17:43:56

标签: ruby-on-rails ruby-on-rails-3 activerecord

我的模型有这个范围

  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,可以更好地阐明scopeself类方法之间的区别。

1 个答案:

答案 0 :(得分:2)

你想要做什么?如果你想返回一个字符串,请使用类方法。如果你想定义一个可链接的ARel范围,我总是建议使用类方法,但有些人更喜欢通过scope的“显式”方式。

def self.supported
  order('name').to_a * ", "
end