使用关联方法时的质量分配警告

时间:2011-12-08 04:11:43

标签: ruby-on-rails ruby-on-rails-3

当我使用关联方法创建新对象时,我会发现非常奇怪的质量分配错误。

我有一个如下所示的用户模型:

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。

1 个答案:

答案 0 :(得分:0)

如何更改用户模型以包含帖子关联的attr_accessible

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