【问题标题】:Why are associated records being deleted when dependant destroy is not set in ruby on rails?为什么在 ruby​​ on rails 中未设置依赖销毁时关联记录被删除?
【发布时间】:2012-08-28 22:16:15
【问题描述】:

由于某种原因,当我删除上传的照片时,它所属的相册也会自动删除。

没有任何意义,因为我没有在任何模型上设置“依赖销毁”。

这是终端日志:

Started DELETE "/settings/photo_gallery/photos/86" for 127.0.0.1 at 2012-08-28 22:39:50 +0100
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1] Processing by PhotosController#destroy as JS
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]   Parameters: {"id"=>"86"}
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]   Photo Load (0.4ms)  SELECT `photos`.* FROM `photos` WHERE `photos`.`id` = 86 LIMIT 1
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]   PhotoAlbum Load (0.2ms)  SELECT `photo_albums`.* FROM `photo_albums` WHERE `photo_albums`.`photo_id` = 86 LIMIT 1
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]   Profile Load (3.2ms)  SELECT `profiles`.* FROM `profiles` WHERE `profiles`.`photo_id` = 86 LIMIT 1
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]    (0.3ms)  BEGIN
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]   SQL (0.6ms)  DELETE FROM `photos` WHERE `photos`.`id` = 86
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]    (12.0ms)  COMMIT
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1]   PhotoAlbum Load (15.2ms)  SELECT `photo_albums`.* FROM `photo_albums` WHERE `photo_albums`.`id` = 36 LIMIT 1
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1] Redirected to http://localhost:3000/settings/photo_gallery/36
[af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1] Completed 302 Found in 46ms (ActiveRecord: 31.9ms)
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1] 

Started DELETE "/settings/photo_gallery/36" for 127.0.0.1 at 2012-08-28 22:39:50 +0100
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1] Processing by PhotoAlbumsController#destroy as JS
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1]   Parameters: {"id"=>"36"}
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1]   PhotoAlbum Load (1.2ms)  SELECT `photo_albums`.* FROM `photo_albums` WHERE `photo_albums`.`id` = 36 LIMIT 1
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1]    (0.1ms)  BEGIN
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1]   SQL (0.3ms)  DELETE FROM `photo_albums` WHERE `photo_albums`.`id` = 36
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1]    (4.6ms)  COMMIT
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1] Redirected to http://localhost:3000/settings/photo_gallery
[affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1] Completed 302 Found in 22ms (ActiveRecord: 6.3ms)
[e5d66fa562a52440eb4e710bfc660402] [127.0.0.1] 

相册型号:

class PhotoAlbum < ActiveRecord::Base

    belongs_to :user
    has_many :photos
    belongs_to :photo

    attr_accessible :album_title, :user_id, :photo_id

照片模型:

class Photo < ActiveRecord::Base


    belongs_to :photo_album


    attr_accessible :photo_album_id, :photo_title, :image, :remote_image_url, :banner_axis
    mount_uploader :image, ImageUploader

用户展示视图:

<%= link_to "", @banner, :confirm => 'Are you sure?', :method => :delete, :remote => true %>

用户控制器显示操作:

 def show
   profile_banner_album_id = @user.photo_albums.find_by_album_title("profile banner").id
   @banner = Photo.find_by_photo_album_id(profile_banner_album_id)
 end

我已经离开铁轨有一段时间了,所以有点生锈,所以我可能遗漏了一些非常明显的东西。查看日志我不确定为什么在删除照片后会删除相册。

在这里期待一些帮助。 亲切的问候

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 rubygems ruby-on-rails-3.2


    【解决方案1】:
    Started DELETE "/settings/photo_gallery/36" for 127.0.0.1 at 2012-08-28 22:39:50 +0100
    [affa94ee1fa7dde2725d6f75c8cfb998] [127.0.0.1] Processing by PhotoAlbumsController#destroy as JS
    

    这意味着销毁操作是通过 JS 在相册控制器上调用的。

    这不是 Rails 问题,您有另一个 JS 调用在删除照片后破坏了相册。

    也许当你点击照片的删除按钮时,相册的删除按钮也会被点击,或者类似的东西......

    【讨论】:

    • 我删除了“remote true”并为link_to helper添加了一个链接名称。现在,当我删除它并不会删除专辑。需要弄清楚为什么使用 remote true 会导致这种情况。它可能与我用来检测何时单击删除照片的实际按钮 div 的 JS 有关。
    • 可能是和自己的JS有冲突。你可以考虑接受这个答案吗?谢谢。
    【解决方案2】:

    这一行:

    [af820895e0bf5c0b031bb5ea297290ee] [127.0.0.1] Completed 302 Found in 46ms (ActiveRecord: 31.9ms)
    

    建议正在完成第一个动作,同时调用第二个动作。 photo_gallery#index 中没有什么奇怪的地方吗? 还是照片模型上的滤镜?

    【讨论】:

    • 解决方案非常简单。忘记在destroy action里回复js了..
    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2010-10-20
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多