冒险村28 - Validate Params

28 - Validate Params

上篇 最後有看到在 Concern 内又 include ValidateParams,觉得是不错的整理方式,所以抽出来另外写一篇,简单来说其实也是放在 concern folder 内,并另外的取个适合在做什麽的名字而已。并没有说这是制式的规范,比较像个概念,不管是要额外处理其他的项目,都可以用相同概念变化,同样放在 Concern 内。

Create concerns folder

  • validate_params.rb

Add app > controller > concerns > validate_params.rb

  # frozen_string_literal: true
  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

另外,也有可能是在搜寻功能时,可能全形、半形导致後端搜寻无法出现对应的东西出来,其实也可以写个类似的东西来做转换,举例来说:

  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 近来就可以使用了

  class UsersController < ApplicationController
    include HalfwidthFullwidthConverter

    def search
      convert_character_to_halfwidth(params[:term])
      #...
    end
  end

My blog


<<:  人脸辨识-day28 模型训练

>>:  【Day28】清除轨迹 ─ Windows篇(二)

[Day 5] 就决定是你了!艺文资讯整合平台

我最後选择了什麽主题 我後来用了第三种-Open API的方式 因为这样就不用自己想资料内容了~ 这...

[Day 29 - 小试身手] Todolist with React (4)

在上一章Todolist with React (3),使用 React-redux 完成了渲染任...

Day25-介接 API(三)Google Calendar(III)OAuth 凭证建立与用 Google Calendar API 建立 Google Meet 会议

大家好~ 今天来实作如何用 Google Calendar API 建立 Google Meet 会...

今天学习flask怎麽做一个blog

由於没有经验 所以我决定学习的顺序是 一开始多看把所有基础的影片都看一遍 在脑子里面建构一遍後 再动...

Day-22 操作方法:BOM与DOM

在本系列 JavaScript的重点复习完成後,就要进入笔者学习的最初衷:网页设计应用了。 前提 一...