2011-12-08 54 views
2

當我使用關聯方法創建新對象時,出現非常奇怪的質量分配錯誤。使用關聯方法時的質量分配警告

我有一個看起來像這樣的用戶模型:

class User < ActiveRecord::Base 
    has_many :posts, :dependent => :destroy 
end 

我也有一個職位模型,看起來像這樣:

class Post < ActiveRecord::Base 
    belongs_to :user 

    attr_accessible :body, :title 
end 

如果我在控制檯下,我得到一個質量分配警告:

> user = User.create(:name => "Daniel"); 
> user.posts.create(:title => "Hello World") 
=> #<Post id: 1, body: nil, title: "Hello World", created_at: "2011-11-03 
    18:24:06", updated_at "2011-11-03 18:24:06", user_id = 1> 
> user.posts 
=> WARNING: Can't mass-assign attributes: created_at, updated_at, user_id 

當我再次運行user.posts,但是,我得到:

> user.posts 
=> [#<Post id: 1, body: nil, title: "Hello World", created_at: "2011-11-03 
    18:24:06", updated_at "2011-11-03 18:24:06", user_id = 1>] 

有幾個其他的技巧我可以做,以避免質量分配錯誤,如調用user.posts我做users.posts.create前。

爲什麼會發生這種情況,我該如何預防它?

我正在使用Rails 3.0.7。

+0

升級到Rails 3.1.3和Ruby 1.9.2仍然沒有解決這個問題。 這並不是什麼大問題,因爲它只打印警告,但是當產生警告時,它不可能引發開發中的錯誤。 –

回答

0

如何改變你的用戶模式,包括attr_accessible上崗協會

class User < ActiveRecord::Base 
    has_many :posts, :dependent => :destroy 
    attr_accessible :posts 
end 
+0

這不幫你嗎?答案出了什麼問題? – membLoper

相關問題