我想在编辑模型时执行一些验证,所以我认为最好的方法是使用
before_update
在Rails中。
有人可以使用before_update调用提供自定义验证器的示例吗?
例如:
我有一个课程主题,我想只允许主题的创建者能够更改标题。
答案 0 :(得分:1)
您可以使用http://guides.rubyonrails.org/active_record_validations_callbacks.html#on在ActiveRecord中验证fase之后的before_update。我刚发布的链接非常有用。您可以使用带有on选项的自定义验证器。
答案 1 :(得分:1)
# Topic.rb
before_update :your_custom_validation
private
def your_custom_validation
# your code
end
你可以用任何回调来做到这一点。也就是说,指定过滤器并将符号传递给方法名称。
您可能还需要考虑添加像devise
这样的用户身份验证gem,并且只允许登录用户执行类似这样的操作,这对于名为cancan
的权限gem非常有用。
编辑:(也可以将它放在这里,即使它在下面的评论中)
我忘记了执行的顺序。我仍然建议使用类似设计和查看合适的人是否已登录(您可以在控制器中验证用户)或使用validate :custom_method
回调来启动其他验证。如果您不是作者,验证失败,则不会保存任何内容。