0

こんにちは、レールコンソールでトラブルが発生しました。ここにエラーがあります。

>> Page.editors << me
NoMethodError: undefined method `editors' for #<Class:0x1038560e8>
    from /Library/Ruby/Gems/1.8/gems/activerecord-3.2.8/lib/active_record/dynamic_matchers.rb:50:in `method_missing'
    from (irb):5

これがモデル間の関係です。

class Page < ActiveRecord::Base
  attr_accessible :name, :permalink, :position
  has_and_belongs_to_many :editors, :class_name => "AdminUser"
  #has_and_belongs_to_many :AdminUser
  belongs_to :subject
  has_many :sections
end

2番目のもの

class AdminUser < ActiveRecord::Base
   attr_accessible :first_name, :last_name, :email, :username
  has_and_belongs_to_many :pages
  scope :named, lambda{|first,last| where(:first_name => first,:last_name => last)}
end
4

2 に答える 2

1

editorsは のインスタンスメソッドでPageあり、 のクラス メソッドではありませんPagePageそれを呼び出すには、 の新しいインスタンスをインスタンス化する必要がありますeditors

page = Page.find(...)
page.editors << me

あなたがやろうとしているのは、クラスmeを使用して追加することです。これは、追加先を指定していないため意味がありません。<<Page Pageme

いくつかの読書:

于 2012-10-26T15:11:43.250 に答える
0

これは間違っています...そうあるべきです

p = Page.first

p.editors << me

エディターは、関連付けによって自動的に作成されるインスタンス メソッドです。詳細については、Rails ガイドを参照してください。

于 2012-10-26T15:10:31.597 に答える