【问题标题】:Rails - Objects not refreshed after Saving or DeletingRails - 保存或删除后未刷新的对象
【发布时间】:2016-10-13 12:39:24
【问题描述】:

我正在对行为怪异的对象进行一些保存和销毁操作。

  if already_in_server
        bookmark_obj = array_already_bookmarked.detect {|bookmark| bookmark.article_doi == article_doi["doi"]}
        if 1 == article_doi["isbookmarked"]
          binding.pry
          bookmark_obj.updated_at = Time.now
          bookmark_obj.save
        else
          bookmark_obj.destroy
        end
 end

它们之间的关联:

up has_many -----> bookmarks
bookmark belongs_to --> up

但是当我尝试调用 up.bookmarks 时,它也会返回被破坏的对象和

bookmark_obj.updated_at = Time.now 

没有更新。

【问题讨论】:

    标签: ruby-on-rails object activerecord insert-update destroy


    【解决方案1】:

    使用Reload 将重新加载数据库中的记录。 所以在你保存记录后,你可以这样做:

    if already_in_server
        bookmark_obj = array_already_bookmarked.detect {|bookmark| bookmark.article_doi == article_doi["doi"]}
        if 1 == article_doi["isbookmarked"]
          binding.pry
          bookmark_obj.updated_at = Time.now
          bookmark_obj.save
          bookmark_obj.reload   # Add this line
        else
          bookmark_obj.destroy
        end
    end  
    

    如果被删除,那么您将需要重新加载其他关系,正如您提到的up has_many bookmarks

    bookmark_obj.destroy
    up.bookmarks # this one will contain the destroyed bookmark 
    up.reload    # reload to retrieve fresh list
    up.bookmarks # will not contain the destroyed bookmark  
    

    【讨论】:

      【解决方案2】:

      通过在bookmark_obj.save 之后添加bookmark_obj.reload 来重新加载对象

      bookmark_obj.save
      bookmark_obj.reload
      

      destroy的情况下,reload父对象

      parent_obj.reload
      parent_obj.bookmarks
      

      希望有帮助!

      【讨论】:

      • 销毁后?你也可以帮忙吗?
      【解决方案3】:

      由于您没有确认以前的解决方案,我认为它不起作用。

      我注意到您使用“安全”版本的方法 savedelete,所以可能因为您的回调验证器失败而不会发生更新和删除?你检查过像save!delete!这样的危险版本吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        相关资源
        最近更新 更多