params 是brower 傳向sever 的資料 hash;為了避免欄位被猜中遭hack,
Strong Parameters 用 .permit 方法限制允許的欄位資料通過
那麼怎麼用呢?在 controller 裡設一個 before_action ;def 裡面使用devise_parameter_sanitizer.permit 去決定設定限制的欄位
Rails 102 的範例程式
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configuer_permitted_parameters, if: :devise_controller?
protected
def configuer_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) do |u|
u.permit(:name, :email, :password, :password_confirmation)
end
end
end
上面除了:sign_up,還有 :sign_in 和 :account_update
Devise 的 Github
https://github.com/plataformatec/devise
搜尋 Strong Parameters 會找到標題,裡面有介紹上面 :sign_up 三個 action
Rails 101 的程式
http://courses.growthschool.com/courses/rails-101-4-0/lectures/229607
Rails 102 的範例程式
https://rocodev.gitbooks.io/rails-102/content/chapter1-mvc/c/strong_parameters.html
關於 if: :devise_controller?
http://www.rubydoc.info/github/plataformatec/devise/Devise%2FControllers%2FHelpers%3Adevise_controller%3F
還有
http://www.jianshu.com/p/6a0280bd2130
沒有留言:
張貼留言