gpt4 book ai didi

ruby-on-rails-3 - before_destroy 回调中未加载关联

转载 作者:行者123 更新时间:2023-12-01 09:32:07 25 4
gpt4 key购买 nike

我有一个简单的 User & Account 模型。如果帐户附加了用户,我想防止删除该帐户。我创建了一个 User 和一个 Account 并将它们关联起来。然后,我在控制台执行 Account.find(x).destroy。帐户被销毁!

注意事项:

  1. 用户的account_id正确。
  2. Account.find(x).users.empty? 在控制台返回 false
  3. Account.find(x).destroyable? 在控制台返回 true
  4. users.empty? in def destroyable? 返回 true !!

我做错了什么?这是什么?

代码(Ruby 1.9.2-p290 上的 Rails 3.2.9):

class User < ActiveRecord::Base
belongs_to :account
end

class Account < ActiveRecord::Base

has_many :users, dependent: :destroy
attr_accessible :name
before_destroy :destroyable?

def destroyable?
if users.empty? # This returns true when called via callback.
true
else
false
end
end

end

最佳答案

所以,事实证明这是 Rails 的又一个陷阱。

解决方案是将 before_destroy 移到 has_many 调用之上。

@Yves Senn,你是对的。从现在开始我会避免它。使用 dependent: :restrict 而不是 dependent :destroy,在这种情况下,不需要我的 before_destroy 回调。

关于ruby-on-rails-3 - before_destroy 回调中未加载关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14175330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com