4

RubyonRailsを学ぶためのWebアプリを作成しています。このアプリを使用すると、ユーザーはサインインしてキャンバスに描画できます。ユーザーのアートワーク番号に固有の一意に生成されたURLを介して、ユーザーが傑作を共有できるようにしたいと思います。アートワークの作成者には、URLをパスワードで保護するオプションも必要です。FacebookやLinkedIn、Twitterなどで共有できるURLは必要ありません。メールやテキストメッセージなどが可能なプレーンなURLが必要です。

これを実装するにはどのようなアプローチを使用する必要がありますか?この機能をすぐに使えるようにする宝石はありますか?デザインのアドバイスや知恵は大歓迎です。ありがとう!

4

1 に答える 1

4

publicと呼ばれる傑作モデルにブール値を設定できます。写真が公開されている場合は、誰でもアクセスできます。ただし、公開されていない場合は、リターンURLを使用しても何も起こりません。

パブリックURLはハッシュを介して作成できます。私は通常、モデルの作成時にハッシュトークンを作成するのが好きです。

rails g migration add_hash_token_to_masterpieces hash_token

モデルでは、メソッドを使用しbefore_createてプライベートメソッドを呼び出すことができます。これにより、hash_tokenがランダム化された16進数で更新されます。

  before_create :generate_hash_token

private

  def generate_hash_token
    begin
      self.hash_token = SecureRandom.hex
    end while self.class.exists?(hash_token: hash_token)
  end

次に、ルートファイルで次のようなことを行うことができます

match "/public/:hash_token" => "masterpieces#public_masterpiece", as: "public"

次に、コントローラーでハッシュトークンの検索メソッドを使用し、対応するビューを使用してパブリックユーザーの画像を表示できます。注意_and_publicは、公開されているものだけを見つけることです。ハッシュが有効であっても、傑作が公開されていない場合はレコードを返しません。

def public_masterpiece
  @masterpiece = Masterpiece.find_by_hash_token_and_public(params[:hash_token], true)
  ...
end

public_masterpiece.html.erb次に、傑作ビューで、許可されたアカウントをまだ持っていないが、画像を表示できるユーザー向けの特定のレンダリングであるというファイルを作成できます。承認にcancanのようなgemを使用している場合は、public_masterpieceアクションを許可していることを確認する必要があります。

于 2013-02-25T04:13:24.977 に答える