0

Railsを使用してから数か月しか経っていないため、明らかな何かが欠けている可能性がありますが、属性が、、attr_accessibleまたはによって一括割り当てから保護さattr_protectedれている場合、最初にレコードを作成するときにその属性をどのように設定しますか?(そして、それでも安全な方法でそれを行ってください。)


例えば:

会社の従業員がトレーニングを受けたさまざまな手順やプロセスを追跡するアプリケーションに取り組んでいるとします。

このアプリケーションの一部として、、、、およびの3つのモデルがUserありCourseますTrainingClassUser従業員をCourse表し、従業員がトレーニングできるさまざまなことをTrainingClass表し、従業員がコースでトレーニングされる特定のクラスを表します。

TrainingClass、モデル(クラスは基本的にコースの特定のインスタンスであるため)とモデル(クラスには、を作成するユーザーである単一のインストラクターがいるため)のbelongs_to両方と関係があります。同様に、モデルとモデルはどちらもモデルと関係があります。CourseUserTrainingClassCourseUserhas_manyTrainingClass

その情報に基づいて、どのように新しいレコードを作成しTrainingClassますか?

私は言うことができます:

course.training_classes.build(user_id: user.id)

また

user.training_classes.build(course_id: course.id)

user_idしかし、それはorcourse_id属性の一括割り当てではないでしょうか。

アプリケーションを安全に保ちながらこれを行うための最良の方法は何でしょうか?

4

1 に答える 1

3

一括割り当てセキュリティ、特にロールについてお読みください。

あなたが持つことができます

class TraningClass < ActiveRecord::Base
  attr_accessible .....
  attr_accessible ....., :user_id, as: :create
end

......一括割当でアクセス可能にしたい他の属性のリストはどこにありますか。次に、電話をかけるとbuild、その役割を引き継ぎます

course.training_classes.build({user_id: user.id}, as: :create)

他のモデルについても同様に繰り返します。、などを呼び出すときにロールを指定しない限り、デフォルトのロール(最初のロール)が使用されます。:createbuildcreate!

于 2012-07-12T13:51:33.177 に答える