ユーザーが自分の仕事のパフォーマンスについてフィードバックを要求できるようにする「フィードバック」モデルがあります。新しいフィードバック リクエストを作成するための基本的なアクションと、プロバイダー (フィードバックで応答する人) にリクエストを送信するためのメーラーを作成しました。
以下の実装について、コミュニティからのアドバイスをお願いします。
- 新しいフィードバック要求が作成されると、送信される電子メールには、プロバイダーがユーザーのパフォーマンスに関するフィードバックを入力できるフォームへのリンクが含まれている必要があります。
- フィードバック プロバイダーは、どのような方法でも (つまり、完全にアプリケーションの外部で) ログインまたはサインアップする必要はありません。
- 送信後、プロバイダーからのフィードバックをシステムに取り込む必要があります。
現在、それを実装するための次のアイデアがありますが、これが最善の方法であるかどうかはわかりません。
- 新しいフィードバック リクエストの作成時に一意のトークンを生成します。次のようなもの: Rails で一意のトークンを作成する最良の方法は? .
- 次に、トークンを「フィードバック」テーブルに入力する必要があります。
- 次にメーラーは、別のコントローラーへのリンクを生成する変数 (@url など) を生成する必要があります (たとえば、'external_feedback' と、ログインを必要としないアクション (Devise の no before_filter :authenticate_user! など) を生成します)。
- その URL には、特定のフィードバック リクエストのトークンを含むパラメーターが含まれている必要があります。
- アクションは、「フィードバック」リクエストと simple_form で生成されたフォームを更新することです。
全体は、アンケートやアンケート (Survey Monkey など) に回答するのと似ています。
いくつかの調査の結果、Friendly ID gem がここで役立つ可能性があると考えています。http://guides.rubyonrails.org/form_helpers.htmlのセクション 8 も読んでいましたが、おそらく正式な意味で Authenticity_token を実装する必要があります。私が本当に探しているのは次のとおりです。
- 上記のアプローチは、これを行うための一般的に正しい方法ですか?
- もしそうなら、それをどのように実装するか(Friendly IDの有無にかかわらず)の詳細はありますか?
- そのような URL/トークンを生成するために存在する gem を知っていますか?
前もって感謝します。モデルとコントローラーの詳細の現在の状態を含めています。
feedback.rb
# == Schema Information
#
# Table name: feedbacks
#
# id :integer not null, primary key
# user_id :integer
# p_first_name :string(255)
# p_last_name :string(255)
# p_email :string(255)
# goal_id :integer
# u_comment :text
# p_comment :text
# created_at :datetime
# updated_at :datetime
#
class Feedback < ActiveRecord::Base
belongs_to :user
belongs_to :goal
has_many :feedback_attributes
validates_presence_of :p_first_name, :p_last_name, :p_email, :goal_id
end
そして、これは私のメーラーです:
class FeedbackMailer < ActionMailer::Base
def feedback_request(user, feedback)
@user = user
@feedback = feedback
@url = 'http://thisistheexampleurlforfeedback'
mail(to: @feedback.p_email, subject: "#{@user.first_name} #{@user.last_name} has requested your feedback", from: @user.email)
end
end