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