0

我正在使用具有JSON API的Rails 3.2.2应用程序,并且我使用CLI客户机来插入一些数据。它的工作原理除了作者 模型。当我尝试创建一个新的后(POST belongs_to的:作者和 作者的has_many:帖子)我得到以下错误:即使我使用attr_accessible也不能批量分配受保护的属性

<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

看看其他车型使用'friendly_id'?它是否有可能“解除”attr_accessible所做的一些事情?没有检查过,也不知道它 - 只是一个想法。 – 2012-04-27 17:31:28

+0

谢谢你的回答。几乎所有其他模型使用friendly_id – R3v4n 2012-04-27 17:35:56

+0

无赖;好的:)在类声明中的相同顺序? – 2012-04-27 17:36:48

回答

1

我找到了解决方案! :-)

问题是,我用acts_as_taggable_on_steroids插件,它不on Rails的3.2工作...

由于“作者”是具有唯一的模式:name属性,我认为,问题就来了来自作者...但问题出在标签模型(这是在acts_as_taggable_on_steroid插件)。事实上,它的:name属性不是“可访问的”。

所以,我用的是acts_as_taggable_on宝石(https://github.com/mbleigh/acts-as-taggable-on) 其正常工作on Rails的3.X

相关问题