我正在开发具有 JSON API 的 Rails 3.2.2 应用程序,并且我使用 CLI 客户端插入一些数据。除了作者模型外,它工作正常。当我尝试创建一个新帖子时(帖子 belongs_to :author 和 Author has_many :posts)我收到以下错误:
<h1>
ActiveModel::MassAssignmentSecurity::Error in PostsController#create
</h1>
<pre>Can't mass-assign protected attributes: name</pre>
我对该主题进行了大量研究,但没有找到可行的解决方案:-(
我使用 attr_accessible 来避免 MassAssignent 错误,它适用于所有其他模型,但不适用于“作者”名称属性。
这是作者模型:
class Author < ActiveRecord::Base
attr_accessible :name, :email
extend FriendlyId
friendly_id :name, use: :slugged
# some validations
has_many :posts
#authlogic
acts_as_authentic
# some stuffs
end
实际上,我禁用了 whitelist_attributes 并且它解决了我的问题,但我认为这不是执行此操作的便捷方式(而且可能不是一个好主意)。
我的问题是: 为什么 attr_accessible 在这里不起作用?以及如何在不禁用白名单的情况下解决问题?
谢谢,
瑞文
编辑 :
创建新帖子的方法:
def create
@post = Post.new(params[:post])
@post.author = current_author
# respond to etc.
end
current_author 使用给定的 API 密钥查找作者。