zsl*_*ius 5 validation ruby-on-rails
所以我这里有两个型号:
class Screen < ActiveRecord::Base
belongs_to :user
validates :screen_size, :numericality =>{:less_than_or_equal_to =>100,:greater_than_or_equal_to => 0},:if => "user.access==1"
class User < ActiveRecord::Base
has_many :screens
attr_accessible :access
Run Code Online (Sandbox Code Playgroud)
但是这个代码不起作用,因为无论user.access是什么值,它仍然会执行验证.我在这做错了什么?
谢谢
apn*_*ing 21
更改:
:if => "user.access==1"
Run Code Online (Sandbox Code Playgroud)
有:
:if => lambda { |screen| screen.user.try(:access) ==1 }
Run Code Online (Sandbox Code Playgroud)
因为:
你需要传递一个函数来动态评估条件
如果您的屏幕没有任何用户,仅仅screen.user.access会抛出异常
| 归档时间: |
|
| 查看次数: |
9488 次 |
| 最近记录: |