4

これを見た...

アクティブレコードの結果をハッシュの配列に変換する方法

そして、スコープ付きまたはスコープ外のレコード セットをハッシュの配列に変換できるメソッドを作成したいと考えていました。これをモデルに追加しました:

 def self.to_hash
   to_a.map(&:serializable_hash)
 end

ただし、このエラーが発生します。

NameError: undefined local variable or method `to_a' for #<Class:0x007fb0da2f2708>

何か案が?

4

2 に答える 2

14

おそらくそれも呼び出す必要があり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ため少し重複していますが、Rails 4 では必要になります。all

于 2013-06-20T23:34:47.913 に答える
2

クラスのインスタンスではなく、クラスに対してアクションを実行しています。self.インスタンスでこれを呼び出すか、コレクションをクラスメソッドに渡す必要があるコレクションで呼び出すことができます。

def self.to_hash(collection)
  collection.to_a.map(&:serializable_hash)
end
于 2013-06-20T23:35:07.587 に答える