我看到了这个...
并想创建一种方法,允许我将任何范围或非范围记录集转换为哈希数组。我将此添加到我的模型中:
def self.to_hash
to_a.map(&:serializable_hash)
end
但是,我收到此错误。
NameError: undefined local variable or method `to_a' for #<Class:0x007fb0da2f2708>
任何想法?
我看到了这个...
并想创建一种方法,允许我将任何范围或非范围记录集转换为哈希数组。我将此添加到我的模型中:
def self.to_hash
to_a.map(&:serializable_hash)
end
但是,我收到此错误。
NameError: undefined local variable or method `to_a' for #<Class:0x007fb0da2f2708>
任何想法?
您可能也需要调用all它。只是在to_a范围或现有结果集(例如User.active.to_hash)上可以正常工作,但不能直接在模型上(例如User.to_hash)。使用all.to_a将适用于这两种情况。
def self.to_hash
all.to_a.map(&:serializable_hash)
end
请注意,all.to_a由于已经返回一个数组,所以有点重复all,但在 Rails 4 中它是必需的。
您正在对类执行操作,而不是类的实例。您可以取消self.then 在实例上调用 this ,或者在需要将集合传递给类方法的集合上调用它:
def self.to_hash(collection)
collection.to_a.map(&:serializable_hash)
end