2013-07-17 85 views
0

我試過rails指南並搜索了很多,但可以找到答案。 我試圖用腳手架發電機如何在rails4的資源路徑末尾添加唯一字符串

的情況是產生在軌道4,5祕密後支架:用戶可以創建祕密的職位,他們將得到它可以作爲一個驗證字符串

rails g scaffold secret title:string content:text token:string在未來的祕密憑證 鏈接

我想追加該令牌值在所有 「secret_posts」 路線

如:

: secret/1/sadkljaldjlak 

: secret/1/edit/sasadadallkha 


我想將該令牌用作驗證的唯一代碼。 任何幫助表示讚賞

+0

whay你需要將其追加的路線?你可以通過你的網址像edit_sectret_path發送(:令牌=> @token) – Debadatt

+0

是的,但它只是沒有編輯, 像 創建祕密後看後鏈接/祕密/ 1/tokenada 我的意思是,他們可以保存鏈接及其編輯更新帖子而不使用密碼 –

回答

0

首先,創建一個遷移到機會令牌將是其他網站可見:字符串令牌:文本,然後使用SecureRamdom.urlsafe_base64生成令牌,你的模型中使用此代碼:

def secret_token 
    if self.new_record? 
    self.token = SecureRandom.urlsafe_base64 
    end 
end 

之後,你可以創建這樣一個路徑:

get 'secret/:edit_hash/edit',  to: 'secret#edit', as: :secret_offer 
patch 'secret/:edit_hash',    to: 'secret#update' 
put 'secret/:edit_hash',    to: 'secret#update' 

和控制器上:

def edit 
    @secret = Secret.find_by!(edit_hash: params[:edit_hash]) 
    your code.. 
end 

def create 
    @secret = Secret.find_by!(edit_hash: params[:edit_hash]) 
    your code.. 
end 

希望這有助於

0

您應該能夠通過單獨指定這樣的途徑做到這一點:

get 'secret/:id/:token' => 'secret#show' #or whatever action 

在這種控制器動作,您可以確保令牌的ID相匹配。

但你應該知道,這是不安全的,該URL將被存儲在瀏覽器歷史記錄,如果該頁面有外部鏈接

相關問題