종속성을 사용하면 설교 비디오와 설교 비디오 사이의 중첩 된 belongs_to has_one 관계에서 YouTube 비디오가 제대로 파괴되는 문제가 있습니다.중첩 된 리소스가 종속 파괴에서 제대로 파괴되지 않았습니다.
저는 youtube_it 보석을 사용 중이며 상당히 바닐라 설정이 있습니다. 아래
관련 비트 :
비디오 컨트롤러 -
def destroy
@sermon = Sermon.find(params[:sermon_id])
@sermon_video = @sermon.sermon_video
if SermonVideo.delete_video(@sermon_video)
flash[:notice] = "video successfully deleted"
else
flash[:error] = "video unsuccessfully deleted"
end
redirect_to dashboard_path
end
비디오 모델 -
belongs_to :sermon
def self.yt_session
@yt_session ||= YouTubeIt::Client.new(:username => YouTubeITConfig.username , :password => YouTubeITConfig.password , :dev_key => YouTubeITConfig.dev_key)
end
def self.delete_video(video)
yt_session.video_delete(video.yt_video_id)
video.destroy
rescue
video.destroy
end
설교 모델 -
has_one :sermon_video, :dependent => :destroy
accepts_nested_attributes_for :sermon_video, :allow_destroy => true
에서 위의 설정, 모든 로컬 d ata가 성공적으로 제거되었습니다. 그러나, youtube에 비디오가 아닙니다.
모델에서 메소드를 사용하여 destroy 액션을 덮어 쓰려고했으나 내 이해에 실패했기 때문에 YouTube에서 삭제 한 비디오 또는 로컬에서 삭제 한 레코드 만 가져올 수 있습니다. 동시에 두 가지를 동시에 사용할 수는 없습니다. (아래 두 가지 변종과 결과를 게시했습니다.)
def self.destroy
@yt_session ||= YouTubeIt::Client.new(:username => YouTubeITConfig.username , :password => YouTubeITConfig.password , :dev_key => YouTubeITConfig.dev_key)
@yt_session.video_delete(self.yt_video_id)
@sermon_video.destory
end
이는 YouTube에서 비디오를 파괴하는 역할을
아닌 로컬 리소스 - -
def self.destroy
@yt_session ||= YouTubeIt::Client.new(:username => YouTubeITConfig.username , :password => YouTubeITConfig.password , :dev_key => YouTubeITConfig.dev_key)
@yt_session.video_delete(self.yt_video_id)
end
마지막으로, 링크 I
이는 로컬 기록을 파괴하는 역할을한다 당신의 도움이 아주 많이 appreci에 대한
<%= link_to "Delete", [@sermon.church, @sermon], :method => :delete %>
감사합니다 - '이 도움이 경우, 설교를 파괴하기 위해 사용하고 있습니다 ated!