一括割り当てについて読む
ロールを作成できます
attr_accessible :first_name, :last_name # default role
attr_accessible :first_name, :last_name, :premium, :as => :special # 'special' role
.update_attributes(params)
このモデルを呼び出すと、デフォルトのロールが使用されます。:premium
で見つかった場合params
、エラーがスローされます。
POST
特別なフォームのメソッドでは、 like の:special
ロールを指定し、属性の一括割り当てを許可するロールを使用するupdate_attributes
よう.update_attributes(params, :special)
に指示します。update_attributes
:special
:premium
params
あなたが言及したような値を持つ電話番号のように、いくつかのプロパティに基づいてロール名を条件付きで渡すことができます
@the_model.update_attributes(params, params[:phone_no].present? ? :special : :default)
これらの条件がより複雑な場合は、クラス メソッドとしてモデルに追加することを検討してください。
def self.special_role?(params)
# fancy conditions here, returning true/false
end
そして、次のupdate_attributes
ように見えるかもしれません
@the_model.update_attributes(params, TheModel.special_role?(params) ? :special : :default)