我正在开发一个带有JSON API的Rails 3.2.2应用程序,我使用的是 CLI客户端用于插入一些数据。除作者外,它工作正常 模型。当我尝试创建一个新帖子时(Post belongs_to:author and 作者has_many:帖子)我收到以下错误:
<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密钥查找作者。
答案 0 :(得分:1)
我找到了解决方案! : - )
问题是我使用了act_as_taggable_on_steroids插件,这在Rails 3.2上不起作用......
自&#34;作者&#34;是唯一具有:name属性的模型,我认为问题来自Author ...但问题出在Tag模型中(在acts_as_taggable_on_steroid插件中)。实际上,它的:name属性不是&#34;可访问&#34;。
所以,我使用acts_as_taggable_on gem(https://github.com/mbleigh/acts-as-taggable-on) 这正确适用于Rails 3.x