mysql - 如何在 Rails 模型中构建正确的 before_destroy

标签 mysql ruby-on-rails ruby-on-rails-3.2

我有以下内容,它删除了一个垃圾箱以及与其相关的所有内容。它很棒而且功能齐全;

型号箱

class Bin < ActiveRecord::Base

    has_many :savedtweets, :dependent => :destroy
    before_destroy :mod_newtweets

    def mod_newtweets
        Newtweet.where(:tweet_id => @bin.savedtweets.pluck(:tweet_id)).update_all(:status => 'new')
    end
end

但是,它会破坏一个垃圾箱,删除所有内容,但不会运行 :mod_newtweets 来更新我的其他表及其列。

如果我将其放入 Controller 中,它就可以正常工作;

Newtweet.where(:tweet_id => @bin.savedtweets.pluck(:tweet_id)).update_all(:status => 'new')

我以为我已经把一切都做好了。

最佳答案

将您的方法替换为:

def mod_newtweets
    Newtweet.where(:tweet_id => savedtweets.pluck(:tweet_id)).update_all(:status => 'new')
end

您在模型中使用了@bin.savedtweets,但尚未在任何地方定义@bin。由于它是一个实例方法,您可以使用 self.savedtweets 或仅使用 savedtweets 来调用 Bin 模型当前实例上的 savingtweets 方法。

关于mysql - 如何在 Rails 模型中构建正确的 before_destroy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19643615/

相关文章:

mysql - 使用 mysql 或 sqlite3 解释 Rails 4 sql 查询

ruby-on-rails - Redmine-插件开发: helper method not found in view

ruby-on-rails - Rails 从 3.2.3 升级到 3.2.11

java - Java HashMap 中的绑定(bind) Null 值

php - 代码点火器 : Access session from config

mysql - 选择所有列对性能不利吗?

ruby-on-rails - 尝试将 Rails 3.2 应用程序推送到 Heroku sqlite3 错误

php - Mysql查询速度太慢了

ruby-on-rails - Rails:包含多态关联

ruby-on-rails - 使用 Capistrano 3 部署 git 本地存储库