0
我遇到了一个问题,当使用: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上的视频不是。
我试图用模型中的某个方法覆盖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
最后,我的链接如果它有帮助 -
<%= link_to "Delete", [@sermon.church, @sermon], :method => :delete %>
感谢您的帮助,非常感谢ated!