Rails Rails 5 Tip 二则

ashchan · March 14, 2016 · Last by xsiry replied at March 18, 2016 · 2665 hits

belongs_to 默认设置了 presence validation (required: true)。

  • 设置项:Rails.application.config.active_record.belongs_to_required_by_default
  • 设置文件:config/initializers/active_record_belongs_to_required_by_default.rb

如果 belongs_to 的字段为空 validation 会报 [字段名] must exist 错误。

每个表单会生成不同的 authenticity_token

  • 设置项:Rails.application.config.action_controller.per_form_csrf_tokens
  • 设置文件:config/initializers/per_form_csrf_tokens.rb

更确切的说,是每个 action 会生成不同的 token。

许多第三方库提交 AJAX 表单的一般做法是取 meta 里的 authenticity_token 值,插到要提交的表单里。这样的表单往往是发往其他 action 的。这样做会导致 token 不正确而抛出 Can't verify CSRF token authenticity 错误。

一不小心就变成小坑了,记下来

5 的 autoload_paths autoload lib 时好像有点 bug,不知道有没有遇到过。

第一个我已经知道了,其实是个 feature。。 第二个表单所有 action 都会生成不同 token,我没遇到过。。。一定是我用过的第三方库太少了。。

学习了

You need to Sign in before reply, if you don't have an account, please Sign up first.