我有一个Company
,User
和Department
模型。有多个不同的公司,其中每个部门都有has_many
。在has_many属性上的轨道验证
A User
可以属于多个Departments
通过UserDepartments
连接表。
在我的形式为User
,我使用:
<%= f.collection_check_boxes :department_ids, @user.company.departments.all, :id, :name %>
什么是验证恶意用户没有使用卷曲等发布不属于用户的公司部门标识的最佳实践?
我目前在连接表本身上使用以下内容,但是想知道是否有更好的接受练习?作为一个单独的说明,如果用户确实提交了一个恶意标识,那么rails会显示一个异常页面,而不是通常的带有errors对象的表单呈现页面;这是为什么?
不雅之处的另一个小点是,当您提交用户表单并说5个不同部门选中时,此验证将创建5个SQL查询。据推测,如果用户模型本身进行了验证,则可以使用一个查询来完成。当然,数据完整性是我最关心的问题。
谢谢。
在连接表模型中添加验证可能不是一个好主意。你能发布部门模型和用户模型的代码吗? – kasperite 2014-12-08 01:33:33
@kasperite这只是一个例子:部门只是'belongs_to:company'和User'belongs_to:company'和'has_many:user_departments','has_many:departments,through::user_departments'。 – 2014-12-08 02:04:59