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アクションを許可していることを確認する必要があります。