:dependent =>:destroyを使用すると、説教とその説教ビデオの間にネストされた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のビデオはありません。
モデル内のメソッドで破棄アクションをオーバーライドしようとしましたが、おそらく私の理解に失敗したため、YouTubeから削除されたビデオまたはローカルで削除されたレコードしか取得できません(私は2つの亜種とその結果を掲載しました)。
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
これが唯一ユーチューブ上の動画を破壊するのに役立つ
ではなく、ローカルリソース - -
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
これが唯一のローカルレコードを破壊するのに役立ちますあなたの助けのための
<%= link_to "Delete", [@sermon.church, @sermon], :method => :delete %>
おかげで、非常に多くのappreciを - それが助け場合は「、説教を破壊するために使用してメートルated!