ruby on rails:URLを暗号化シーケンス番号に変更
1757 ワード
前言:
ウェブサイトを秘密の乱番号に変えたのは、実際の生活の中で私たちが他の人に重要な情報を見たくないからだ.典型的には、ショッピングプラットフォームの注文フロー番号は、業者が自分の成約量を相手に当てられたくないため、注文のidを文字化け番号に変更する必要があります.
実作手順:受注order modelに新しい欄位tokenを追加し、受注乱符号化シーケンス番号端末の実行を格納します.
そして order modelで乱符号化シーケンス番号を生成する方法generate_を確立するtoken, order modelを変更し、before_を追加create,文字化けシーケンス番号設定は注文order生成前に を生成する.再導URL
まとめ:
(1)before_createはRails model内に構築されたコールバックメソッドで,資料を生成する前に何らかの動作を実行させることを目的としている.この例では、注文orderを生成する前に、先生は文字化けシーケンス番号(2)SecureRandomにします.uuidはRubyに内蔵されたランダムジェネレータであり,本例では注文orderに乱符号化シーケンス番号を生成する方法である(3)この2点により,同様に他の資料に乱符号化シーケンス番号を生成し,ウェブサイトを暗号化することができる.
ウェブサイトを秘密の乱番号に変えたのは、実際の生活の中で私たちが他の人に重要な情報を見たくないからだ.典型的には、ショッピングプラットフォームの注文フロー番号は、業者が自分の成約量を相手に当てられたくないため、注文のidを文字化け番号に変更する必要があります.
実作手順:
rails g migration add_token_to_order
新しく生成されたmigrationファイルに、次のコードを追加します.class AddTokenToOrder < ActiveRecord::Migration[5.0]
def change
+ add_column :orders, :token, :string
end
end
そして
rails g migrate
を実行するclass Order < ApplicationRecord
+ def generate_token
+ self.token = SecureRandom.uuid
+ end
+ before_create :generate_token
...
class OrdersController < ApplicationController
before_action :authenticate_user!,only: [:create] #
def create
@order = Order.new(order_params) # order
@order.user = current_user #order
if @order.save
- redirect_to order_path(@order)
+ redirect_to order_path(@order.token) # order
else
render 'carts/checkout'
end
end
def show
- @order = Order.find(params[:id])
+ @order = Order.find_by_token(params[:id]) # id order
end
private
def order_params
params.require(:order).permit(:billing_name,:billing_address,:shipping_name,:shipping_address)
end
end
まとめ:
(1)before_createはRails model内に構築されたコールバックメソッドで,資料を生成する前に何らかの動作を実行させることを目的としている.この例では、注文orderを生成する前に、先生は文字化けシーケンス番号(2)SecureRandomにします.uuidはRubyに内蔵されたランダムジェネレータであり,本例では注文orderに乱符号化シーケンス番号を生成する方法である(3)この2点により,同様に他の資料に乱符号化シーケンス番号を生成し,ウェブサイトを暗号化することができる.