新手问题 关于 Rails 的 Model 和 Controller 之间传值的问题?

qq2729877005 · 2017年08月03日 · 最后由 qq2729877005 回复于 2017年08月04日 · 2881 次阅读

目前 model 里有个验证,要设置条件,只有条件为 true 时,才执行此验证,但条件判断的依赖数据来自于用户的输入,可用户输入的数据又只传到控制器,怎么从 controller 传数据给 model 呢?😂

在控制器调用 model 里方法。😂

yunshang 回复

能再具体解释下吗?

qq2729877005 回复

你把代码贴出来吧,看是什么情况?

chenge 回复
if 根据用户输入的数据设置
  validates :platform, presence: true
end
5 楼 已删除

一定要 valudates 来实现吗

试试这个,虽然不是传值,但是好像能解决你的问题

# 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
qq2729877005 回复

你也没说具体啊

是不是可以写成这样?

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

当 paltform 为 nil 时,不触发验证,否则进行验证

qq2729877005 关闭了讨论。 06月29日 14:32
需要 登录 后方可回复, 如果你还没有账号请 注册新账号