当我使用关联方法创建新对象时,我会发现非常奇怪的质量分配错误。
我有一个如下所示的用户模型:
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 :(得分:0)
如何更改用户模型以包含帖子关联的attr_accessible
class User < ActiveRecord::Base
has_many :posts, :dependent => :destroy
attr_accessible :posts
end