3

足場を作成し、別のモデルとの関係が必要な場合は、belongs_toというフィールドを追加しますmodel_id(モデルをそのモデルの名前に置き換えます)。

rails generate scaffold Grade user_id:integer subject_id:integer letter:string

次に、上記のGradeモデルに次のように追加します。

belongs_to :user
belongs_to :subject

Rails は、フィールドのリストにuser_idandを自動的に追加します。また、フィールドのリストにandを追加して、それらを使用して一括割り当てできるようにすることで、害を及ぼすことはありますか?subject_idattr_accessible:user:subjectattr_accessible

4

2 に答える 2

2

attr_accessible は、外部からアプリケーションに送信されたデータに起因する大量割り当て攻撃から保護することを目的としています。ほとんどの場合、作成および更新アクションで次のようなことを行っている可能性があります。

@model = Model.new(params[:model])
or
@model.update_attributes(params[:model])

subject_id を使用するフォームと subject を使用する別のフォームがある理由を自問する必要があります。ここでの唯一の本当の害は不整合であり、これは実際には大規模なプロジェクトにかなりの害を及ぼす可能性があります. すべてのフォームが実際のデータベース列 (subject_id) を使用するという規則に従えば、将来、なぜ 2 つの異なる方法でそれを行ったのか思い出せなくなったときに頭を悩ませることがなくなります。

コンソールから属性を更新する場合は、または私が作成したsudo_attributesupdate_attributes(params[:model], without_protection: true)と呼ばれるgemを使用して、.sudo_update_attributes(params[:model])

于 2012-09-24T12:10:48.870 に答える
0

私はそれがあなたを傷つけることはないと思いますが、あなたのコードに一種の混乱をもたらすでしょう

于 2012-09-24T19:01:47.783 に答える