私は JSON API を持つ Rails 3.2.2 アプリケーションに取り組んでおり、データを挿入するために CLI クライアントを使用しています。Author モデル以外は正常に動作します。新しい投稿を作成しようとすると (投稿の 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 キーを使用して作成者を見つけます。