2017-09-06 49 views
1

第一次調用者,很長時間的監聽器。我的Rails協會有問題。我的目標是建立一個活動網站,供用戶創建活動和參加活動。我創建了我的模特用戶和活動和協會評爲如:Rails沒有方法錯誤關聯

class Event 
    belongs_to :creator, :class_name => "User" 
    ... 
end 

class User 
    has_many :created_events, :foreign_key => "creator_id", :class_name => "Event", dependent: :destroy 
    ... 
end 

我的事件模型只有一個描述和creator_id外鍵,我的用戶只是有一個名稱字段。但是當我嘗試使用@event = current_user.events.build時,我得到了一個沒有方法的錯誤。 current_user只是使用會話來返回用戶ID

我不能爲我的生活弄清楚爲什麼我得到這個錯誤。

我有關於this Github repository的完整項目。

+0

一定要檢查出[風格指南](https://meta.stackexchange.com/questions/18614/style-guide-for-questions-and-answers),你應該總是嘗試將代碼格式爲儘可能最好。 – Oxfist

+0

如果'current_user'只是用戶id,那麼它不是一個類User的實例,這就是爲什麼沒有'events'方法。使用這個id來獲得你想要的用戶,像'User.find(current_user)'。 – Oxfist

+2

class'User''has_many:created_events',not'has_many:events'。因此,請嘗試'current_user.created_events.build'而不是'current_user.events.build'。 – jvillian

回答

1

Userhas_many :created_events而不是has_many :events。因此,請嘗試current_user.created_events.build而不是current_user.events.build

+0

添加到此答案時,不要忘記在操作事件屬性('date/description')後通過調用:'@ event.save'來保存新事件,因爲'build'方法只創建一個內存中的實例。 'save'會使它保存在數據庫中。 –