今天遇到个问题,Rails 项目一个表单无法提交,但是却没有任何错误信息...这个问题折腾了我几个小时...大爷的
最后我发现问题在于我的 Model 里面有个 before_save ,代码是这样的
class Post
include Mongoid::Document
field :title
field :end_on, :type => DateTime
field :closed, :type => Boolean
before_save :check_cloose_status
def check_cloose_status
self.closed = (Time.now > self.end_on)
end
end
这个代码看起来没什么问题... 注意最后行,check_cloose_status 会把 self.closed 的值作为返回值 return,如果 self.closed 是 false,那带来的问题就是 Model 无法保存。 但是这个东西太细微了,我们很容易把它忽略掉
ActiveRecord 5 已经没这个问题了,callback 只有遇到 throws :abort 才能中断了。
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html#module-ActiveRecord::Callbacks-label-before_validation-2A+returning+statements
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。