0

大家好,rails 控制台遇到了一些问题。这是错误。

>> 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

第二个

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而不是的类方法Page。您需要实例化一个新的实例Page来调用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 回答