2012-10-26 104 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