1

私は少し神経質で、bokmann のrails3_fullcalendarに便乗して Rails 3.2 でカレンダー アプリを作成しようとしていますが、アプリでイベントを作成しようとすると、次のエラーが発生します。

ActiveModel::MassAssignmentSecurity::Error in EventsController#create

Can't mass-assign protected attributes: title, description, starts_at(1i), starts_at(2i),
starts_at(3i), starts_at(4i), starts_at(5i), ends_at(1i), ends_at(2i), ends_at(3i), ends_at(4i),
ends_at(5i), all_day

{"utf8"=>"✓",
"authenticity_token"=>"bq3ZUXLm4lYbja9FUafbroFF2Zwt8iMw6GWfvoRuPLA=",
"event"=>{"title"=>"sddfsdf",
"description"=>"df",
"starts_at(1i)"=>"2012",
"starts_at(2i)"=>"6",
"commit"=>"Create Event"}

解決策はこれのように見えますが、AUTH_TOKEN を AJAX POST (送信中) と共に渡しますが、まだ機能していません。

何か案は?

4

3 に答える 3

1

あなたの特定の質問に対する答えは以下にありますが、より良い答えはそのデモの新しいバージョンを見ることです。あなたが見ているデモ以来、私は、アセットの宝石としてフルカレンダーのJavaScriptとcssを使用して、Rails3.2でこれを行う方法を示すデモを再作成しました。

https://github.com/bokmann/fullcalendar_assets


最近(Rails 3.2?)、一括割り当てに対する保護のデフォルトが変更されました...一括割り当てを許可する属性を具体的に許可する必要があります。

http://guides.rubyonrails.org/security.html#mass-assignment

イベントモデルで、次のような行を追加します。

attr_accessible:title、:description、:starts_at、:ends_at、:all_day

于 2012-06-21T17:14:56.530 に答える
1

この例外が発生した場合は、既に認証されているはずなので、Auth_token は問題ではありません。

Rails には、バージョン 3.2.3 以降、一括代入から保護するためのデフォルトがあります。モデルでそれらを明示的に許可する必要があります。そのため、サードパーティの古いコードは失敗します。モデルを次のように変更します。

class Event
  ..
  attr_accessible :title, :description, starts_at ...
end

ただし、許可された属性のリストに次のようなものを含めないuser_idでください。これにより、自分のイベントのみを変更することを許可されているユーザーがイベントを再接続して別のユーザーに属することを防ぐことができます。

Railsガイドも参照してください: セキュリティガイド、一括代入

于 2012-06-21T17:10:13.747 に答える
0

fullcalendar アプリconfig.active_record.whitelist_attributes = trueは、レールのデフォルトになる前に作成されたようです。

あなたのイベントモデルには、 attr_accessible :title, :descriptionなどのような行がありますか?

于 2012-06-21T16:55:00.033 に答える