目前 model 里有个验证,要设置条件,只有条件为 true 时,才执行此验证,但条件判断的依赖数据来自于用户的输入,可用户输入的数据又只传到控制器,怎么从 controller 传数据给 model 呢?
试试这个,虽然不是传值,但是好像能解决你的问题
# model
with_options on: :checked do |model|
model.validates :platform, presence: true
# 如果以后有别的验证,这里可以多加几个validates
end
# controller
if something_is_true?
model.valid?(context: :checked)
else
model.valid?
end
是不是可以写成这样?
validates :platform, presence: true, if : check_platform
def check_platform
end
用 Ruby 的 attr_accessor, 然后 controller 里面调用方法就行。不过干嘛不用 Rails5 的 custom context 呢?
谢谢大家的热心帮忙,问题解决了,上源码
validates :platform, presence: true, allow_nil: true