0

私がしようとすると:

class Construction < ActiveRecord::Base
  def columns
    ["a", "b"]
  end   
  store :dados, accessors: columns
end

私は得る:

undefined local variable or method `columns' for #<Class:0x007f891037dac0>

それで、どうすればいいですか?

PS: 「自己」を入れてみました。列の前で、機能しませんでした。

編集 — 問題に関する詳細情報:

列「dados」に格納された一連のシリアル化されたハッシュ データを設定しました。メソッドストアはそれを行い、属性アクセサーを設定します。このコードの、問題に本質的ではない他の部分を消去しましたが、基本的には、そこで直接宣言するのではなく、メソッドを介してアクセサー属性を通知する必要があります。その理由は、列を生成するメソッドを再利用するためです。

インスタンス変数でメソッドを使用することはありませんが、代わりにモデル自体の内部で使用します。そのコードの再利用のため

4

2 に答える 2

1

モデルにメソッドを作成すると、そのモデルのすべてのインスタンスにそのメソッドがあります。たとえば、次のようにします。

コントローラーで:

@construction=Construction.first

@construction.columns // will return that array;

より良いお手伝いができるように、何をする必要があるかについての詳細を教えてください

うーん、私はまだ問題を理解するのに苦労していますが、作成後に次のような方法を実行する必要があるかもしれません:

class Construction < ActiveRecord::Base
  after_create :something

  def columns
    ["a", "b"]
  end   

  private
  def something
      store :dados, accessors: self.columns
  end
end
于 2013-08-07T17:32:16.760 に答える
0

Ok。私はそれを自己追加して解決しました。以前は、列を別のキーワードに変更すると、Rails メソッドが発生し、サーバーの再起動後にのみ機能しました。みんな、ありがとう!

于 2013-08-07T17:57:09.233 に答える