2012-10-26 97 views
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 

第二个

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 

回答

0

这是错误的...应该是

p = Page.first 

p.editors << me 

的编辑是通过associations..refer自动进行到一个实例方法Rails指南获取更多信息...

+0

我是新编程得益于它的工作 – skip87

1

editors是一个实例方法Page,不是Page的一种方法。您需要实例化一个Page的新实例以在其上调用editors

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

你试图做的是通过对的Page类是没有意义的,因为你不指定Page追加me使用<<追加me

一些阅读:

+0

或'Page.new.editors',尽管这可能是因为你漂亮不值钱将失去引用刚创建的新页面实例的能力。也就是说,我经常使用'[some class] .new。[some_method]',就像我想用实例方法一样时,我发现它比将它分配给一个变量然后调用该变量更快。 –

+0

同意。我将示例改为使用'find',因为它更可能是*(和有用的)*场景。 – deefour

+0

我是编程新手,感谢它的工作 – skip87