0

我有一个嵌套属性的验证器:

validates_numericality_of :rate, greater_than: 0, if: -> {self.user.is_tutor?}

其中 is_tutor 是父表单中的布尔字段。

尽管进行了多次尝试,但验证似乎并没有达到我想要的效果。我希望它采用传递给更新表单的 params[:is_tutor] 值,但我的验证器始终检查存储在数据库中的值。

如何将 :if => 设置为布尔值 is_tutor 的参数散列?我已经尝试过使用 params[:is_tutor] 但这没有用。

我也试过把它放在父母身上:

validates_numericality_of :rate, greater_than: 0, if: :is_tutor?

这着眼于 :is_tutor 的现值,这正是我想要的。但是,它找不到 :rate 符号,因为它是一个嵌套属性。

有什么想法吗?谢谢!

4

1 回答 1

0

这应该可以工作,虽然我没有测试它。

validates_numericality_of :rate, greater_than: 0, if: -> (r) {r.user.is_tutor?}

于 2013-08-04T19:04:28.367 回答