걸작 모델에 public이라고하는 부울을 사용할 수 있습니다. 사진이 공개이면 다른 사람이 볼 수 있습니다. 그러나 공개되지 않은 경우 반환 URL을 사용하면 아무 것도 처리하지 않습니다.
공개 URL은 해시를 통해 만들 수 있습니다. 나는 전형적으로 모델이 생성 될 때 생성 된 해쉬 토큰을 갖는 것을 좋아한다. 모델에서
rails g migration add_hash_token_to_masterpieces hash_token
, 당신은 무작위 진수로 hash_token 업데이트됩니다 taht를 private 메소드를 호출 할 before_create
방법을 사용할 수 있습니다. 당신의 루트 파일에 다음
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과 같은 보석을 사용하는 경우 public_masterpiece 조치를 허용해야합니다.
감사합니다. 그렇다면 정확히 어떤 URL을 공유 할 수 있습니까? 그리고 모든 고유 URL은 어디에 저장됩니까? – user2028025
URL은 모델의 해시 토큰을 통해 동적으로 만들어집니다. URL은 HTTP : // site/public/hashtoken입니다. – kobaltz