Rails [已解决] 额,请问下 model 里头如何 validates「两个 attribute 至少有一个不是 blank 」

blacktulip · 2012年12月12日 · 最后由 simlegate 回复于 2012年12月14日 · 2219 次阅读

attr_accessible :attr1 , :attr2

validates_presence_of :attr2, if: :attr1.blank?

以上写法网页提交的话就报一个 undefined method `validate' for false:FalseClass 错误。

请问是什么地方写错了...这里到底应该怎么写呢...

谢谢

#1 楼 @Magic 已经解决了,谢谢

#2 楼 @blacktulip 怎么解决的你都不贴出来!

#3 楼 @simlegate 就按着 1 楼贴的文档写的啊,没啥特别需要贴的


validates_presence_of :attr2, if: :attr1_blank?

......

private

  def attr1_blank?
    self.attr1.blank?
  end

#4 楼 @blacktulip 可以再简洁点,一行搞掂

validates_presence_of :attr2, if: lambda { |model| model.attr1.blank? }

#5 楼 @HungYuHei 多谢啦,对这样的 callback 还很生疏,这里这样用 lambda 的话就是把这个 instance 传进块里面操作么?

#7 楼 @HungYuHei 前面好像没有 self 之类的东西..还是省略了?

#8 楼 @blacktulip 那个例子了,就是将 self 作为参数赋值给 model,所以在 lambda 中,可以将 model 就是 self

#2 楼 @blacktulip 没看懂为什么会出现你的问题?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号