0

我现在才使用 Rails 几个月,所以我可能遗漏了一些明显的东西,但是如果一个属性受到attr_accessible, 或的大规模分配保护attr_protected,那么当你第一次创建记录时如何设置该属性?(并且以仍然安全的方式进行。)


例如:

假设我正在开发一个应用程序,该应用程序跟踪公司员工接受过培训的不同程序和流程。

作为这个应用程序的一部分,我有三个模型:UserCourseTrainingClassUser代表员工,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_idorcourse_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 回答