我的网站运营方式,一些记录由用户创建,但只是部分填写。管理员必须完成一些记录字段。我正在考虑将与管理字段相关的所有验证放在子类中。
例如,在/app/models/document.rb
:
class Document < ActiveRecord::Base
# minimal validations needed, etc
end
在/app/models/admin/document.rb
中(我甚至不确定下面的语法是否是有效的Ruby)
class Admin::Document < Document
# Extra validations for the fields the admin
end
我的方法是不是一个坏主意?我还计划使用像CanCan这样的基于角色的身份验证。
答案 0 :(得分:2)
也许另一种方法是使用CanCan来允许管理员完成用户文档,而不是将记录子类化或将其拆分为两个。提交表单后,添加administrated
(或approved
)字段,如果是一个或多个管理员,您可以通过unadministrated
(或unapproved
)进行搜索
当然,在当天结束时,管理员会进行最终提交,以便他们可以将administrated
(或approved
)设置为true。从而最终确定文件?
答案 1 :(得分:1)
我认为将所有验证保留在一个类中可能会更好,并且有一个布尔数据库列存储记录是否已由管理员完成。
class Document < ActiveRecord::Base
attr_protected :completed_by_administrator # do not allow this to be set via mass assignment
validate ..., :if => :completed_by_administrator # only do these validates if completed_by_administrator is true
end
首次创建记录时,completed_by_administrator
为false,并且不运行仅限管理员的验证。当管理员完成记录后,在控制器中设置completed_by_administrator = true
,并在保存记录之前自动运行仅管理员验证。