いくつかのこと:
一括代入は通常、属性ハッシュの一部としてオブジェクトを作成する呼び出しに属性を渡すことを意味します。つまり、新しいオブジェクトを作成する呼び出しに、一連の属性をハッシュで渡します。例えば:
@user = User.create({:name => "My name", :user_type => "nice_user"})
ただし、Rails にはいくつかの基本的なセキュリティ ルールが含まれており、デフォルトですべての属性をそのように割り当てることができるわけではありません。どちらができるかを事前に指定する必要があります。次のようにします。
class User < ActiveRecord::Base
attr_accessible :name, :user_type
end
属性 is を指定せずattr_accessible
、それを渡してオブジェクトを作成すると、投稿したエラーが発生します。
詳細は次のとおりです。
http://api.rubyonrails.org/v3.2.9/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html
別の方法は、最初にレコードを作成するときにいくつかの属性を設定し、後で他の属性を設定することです-次のように:
# In this example `user_type` is not attr_accessible so it needs to be set specifically
@user = User.create({:name => "My name"})
@user.user_type = "nice_user"
@user.save
さらに、type
Rails が混乱し、Single Table Inheritance (STI) を使用したいと考えているために列名の使用に問題がある場合は、この質問への回答を確認して回避する方法を確認してください: http:// guides.rubyonrails.org/