Rails:电子邮件确认邮件程序中的RESTful(PUT)URL

问题描述:

从头开始编写我自己的电子邮件确认。努力如何为我的confirmations_controller生成适当的路由。Rails:电子邮件确认邮件程序中的RESTful(PUT)URL

新用户会收到一封电子邮件,其中会显示链接回应用程序以验证地址。

我的想法是它应该是PUT操作,因为它会更改数据库。但是,点击电子邮件中的链接将不会提交“放入”操作...或将它?我必须失去一些东西,抛弃自己的无知。

#config/routes.rb 
... 
resources :confirmations, only: [:update] 

confirmation_url(user.email_token)产生有效的URL:http://localhost:3000/confirmations/ArELEOejYlqbRXdJPavhrp但点击链接时,它是由应用程序收到一个“让”的要求。

我该如何处理?

你的电子邮件格式是什么?如果它的纯文本,它将是一个GET。这本身不是更新激活页面的问题。你也可以打开一个页面(使用GET),让他们点击一个按钮进行最终提交(并不少见)。

但是,通过GET更新不会打扰我这个特定的功能。

例如:

# routes.rb 
get 'confirmations/:id/confirm' => 'Confirmations#confirm' 

# confirmations.rb 
class ConfirmationsController < ApplicationController 

    def confirm 
    # handle the get data here (switch aa flag for the email account)  
    end 
end 
+0

它是**纯文本**。我打算添加HTML,但总会有一个文本版本('多部分'MIME),所以我想我应该准备好处理'GET'请求,不管?!?那么,如果我只是想打破纯粹的REST风格,我该如何/在哪里处理GET更新?也许在编辑行动?但这很笨拙'/ confirmations/abcdefghi .../edit'。 – Meltemi

+0

或者如果他们回应我在#update操作中用'PUT'处理的'HTML'电子邮件。否则我链接到一个'/ edit'页面,在那里他们可以点击'PUT'链接?要么...? – Meltemi

+1

增加了一个例子。是/编辑看起来有点奇怪,你应该指出一些人不喜欢HTML电子邮件(所以用纯文本计数)。你可以自己定义自己的行为(参见示例)。使用GET的IMO不应该是一个问题(在这个特定的情况下)。 – Roger