28 - Validate Params
上篇 最後有看到在 Concern 內又 include ValidateParams
,覺得是不錯的整理方式,所以抽出來另外寫一篇,簡單來說其實也是放在 concern folder 內,並另外的取個適合在做什麼的名字而已。並沒有說這是制式的規範,比較像個概念,不管是要額外處理其他的項目,都可以用相同概念變化,同樣放在 Concern 內。
Create concerns folder
Add app > controller > concerns > validate_params.rb
1 2 3 4 5 6 7 8 9
| module ValidateParams extend ActiveSupport::Concern
def render_404_if_user_id_invalid(user_id) raise ActiveRecord::RecordNotFound if params[:user_id] || User.find(user_id) end end
|
另外,也有可能是在搜尋功能時,可能全形、半形導致後端搜尋無法出現對應的東西出來,其實也可以寫個類似的東西來做轉換,舉例來說:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| module HalfwidthFullwidthConverter extend ActiveSupport::Concern
def convert_number_to_halfwidth(term) return fullwidth_number_to_halfwidth(term) if term.match(/^[0-9]+$/) term end
def convert_character_to_halfwidth(term) return fullwidth_character_to_halfwidth(term) if term.match(/^[a-zA-Z]+$/) term end
private
def fullwidth_number_to_halfwidth(term) term.tr('0-9', '0-9') end
def fullwidth_character_to_halfwidth(term) term.tr("a-z", "a-z").tr("A-Z", "A-Z") end end
|
將下來,要需要的地方 include 近來就可以使用了
1 2 3 4 5 6 7 8
| class UsersController < ApplicationController include HalfwidthFullwidthConverter
def search convert_character_to_halfwidth(params[:term]) end end
|