1
Can't mass-assign protected attributes: created_at(2i), created_at(3i), created_at(1i), created_at(4i), created_at(5i)

私のコードは以下です:

def new
  @subject = Subject.new(:name => 'default')
  @subject_count = Subject.count + 1
end

def create
  # Instantiate a new object using form parameters
  @subject = Subject.new(params[:subject])
  # Save the object
  if @subject.save
  # If save succeeds, redirect to the list action
    flash[:notice] = "Subject created."
    redirect_to(:action => 'list')
  else
  # If save fails, redisplay the form so user can fix problems
    @subject_count = Subject.count + 1
    render('new')

何が問題ですか?

4

3 に答える 3

2

これを試すことができ
ます。対象モデルに、フォームで使用したすべての属性を追加します。

class Subject < ActiveRecord::Base
  attr_accessible :name, :created_at
  ...
  ...
end
于 2012-11-14T12:38:27.570 に答える
0

アプリケーションのconfig.active_record.whitelist_attributesをapplication.rbでfalseに設定するか(非推奨)、attr_accessible:name、:etc..などのattr_accessibleを使用してモデルの属性をホワイトリストに登録します。

于 2012-09-24T02:37:13.020 に答える
0

Subjectアレックスが説明したように、モデルのコントローラーを介して送信された属性を必ずホワイトリストに登録してください。Subject モデルは次のようになります。

class Subject < ActiveRecord::Base
  attr_accessible :created_at
end

なんで?Rails では、悪意のあるユーザーがフロントエンドから不要な属性を送信しないようにするために、最近 ( Github でのセキュリティの問題の後) これが必要です。User クラスに :admin boolean フィールドがあるとします。attr_accessible誰かがフォームに新しいフィールドを追加できなくても<input type="checkbox" name="user[admin]" value="true" checked>、アプリケーションに管理者権限を与えることができます。

補足... :created_at の日付を HTML フォームから設定する必要はありませ:created_at:updated_at

于 2012-09-24T15:11:42.050 に答える