1

次の問題について教えてください。これは基本的なことですが、非常に基本的なものが欠けているようです。':editors'を紹介したとき、正しいクラス名を指していますが、うまくいかないようです。ご協力いただきありがとうございます。

モデルの「ページ」を次のように定義しました-

class Page < ActiveRecord::Base

  belongs_to :subject
  has_many :sections
  has_and_belongs_to_many :editors, :class_name => "AdminUser"

end

私のAdminUser.rbは次のように定義されています

class AdminUser < ActiveRecord::Base


  has_and_belongs_to_many :pages
  has_many :section_edits

  scope :named, lambda {|first,last| where(:first_name => first, :last_name => last)}

end

しかし、Railsコンソールに移動して入力すると

Loading development environment (Rails 3.2.1)
>> page.editors
NameError: undefined local variable or method `page' for main:Object
from (irb):1
4

2 に答える 2

0

ねえ、私はあなたがやっているのと同じトレーニング ビデオをやっていて、同じ問題を抱えていました。私がしたことは、「多対多の関連付け: シンプル」ビデオをもう一度見て、インストラクターとまったく同じようにコードがコピーされていることを確認し、必ず保存することでした! コードの変更が完了したときの .rb ファイル。インストラクターとまったく同じようにコードをコピーしたが、Rails コンソールを起動する前に .rb ファイルの 1 つを保存しなかったため、エラーが発生しました。また、講師から指示されたコードを挿入 (および .rb ファイルを保存) した後は、必ず Rails コンソールを終了して再起動し、すべての .rb ファイルが更新されるようにします。これがお役に立てば幸いです。

もう1つ、私はラインを持っていません

    has_many :sections_edits

私のadmin_user.rbで。これは、あなたが私よりも先に進んでいるためである可能性があり、これが違いを生むかどうかはわかりません. 頑張ってください。同じトレーニング チュートリアルを行っているので、さらにサポートが必要な場合はお知らせください。

于 2015-03-10T21:55:32.050 に答える
0

「ページ」をどこで初期化していますか? 所有する編集者のコレクションは、一般的なページではなく、特定のページに属します。ページを見つける: page = Page.find([何らかの基準])。次に、page.editors はそのページの編集者を返します。

于 2012-03-06T20:13:52.933 に答える