验证器before_update(ing)模型

时间:2011-07-31 22:25:54

标签: ruby-on-rails ruby ruby-on-rails-3 validation

我想在编辑模型时执行一些验证,所以我认为最好的方法是使用

before_update
在Rails中

有人可以使用before_update调用提供自定义验证器的示例吗?

例如:

我有一个课程主题,我想只允许主题的创建者能够更改标题。

2 个答案:

答案 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回调来启动其他验证。如果您不是作者,验证失败,则不会保存任何内容。