2013-11-28 217 views
1

這是一個非常簡單的活動記錄關聯,我嘗試創建,令人沮喪的是未成功完成。無法創建活動記錄關聯

我有兩個模型,發佈和用戶。 User.rb除了has_many :posts 和Post.rb只有belongs_to :user。 我已經運行rake數據庫:遷移並驗證我的帖子表中有一個user_id列。

但是,當我轉到控制檯時,我無法在新對象之間建立關聯。

首先,我作出這樣max = User.create(:name=>"Max") 當一個新的用戶實例,我作出這樣post = Post.create(:user_id=>1, title=>"FirstPost")

新郵實例,然後我試着鍵入max.posts卻得到了一個NoMethodError undefined method 'post=' 如果我試圖建立的關聯像max.post = post , 我犯了同樣的錯誤。

最後,我嘗試將attr_accessor :posts添加到用戶模型。

現在,我可以鍵入max.posts,但我只是得到nil

缺少什麼我在這裏?

+1

後去完整的錯誤,請 –

+0

現在,我接着說:attr_accessor:posts',我不再收到錯誤,只需'nil' –

+1

你能添加完整的代碼和完整的錯誤和你正在做什麼的日誌? '我做到了,得到了這個'並不實際。 – sevenseacat

回答

1

這是因爲用戶中沒有'post ='方法。

嘗試以下操作:

max = User.create(:name=> "Max") 
max.posts.create(:title => "FirstPost") 
max.posts 

作爲一種替代方式:

max = User.create(:name=> "Max") 
post = Post.new(:user => max, :title => "FirstPost") 
post.save 
max.posts 
+0

看着「替代方式」 - 所以我需要在我的'posts'表中有一個'user'列,對吧?爲什麼會這樣,但是設置'user_id'屬性不起作用? –

+1

你在哪裏指定user_id「1」,它可能不是最後創建的用戶的ID。 –

+0

非常感謝 的幫助 –