我看到了这个...
并想创建一种方法,允许我将任何范围或非范围记录集转换为哈希数组。我将此添加到我的模型中:
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