ruby-on-rails - 销毁前回调

标签 ruby-on-rails ruby destroy

我是一名从事 Rails API 工作的 Ruby 新手程序员。我有一个位置模型和一个用户模型,并且一个位置有很多用户。它们之间的关系是这样的:

class Location << ActiveRecord::Base
  has_many: :users
end

class User << ActiveRecord::Base
  belongs_to :location
end

我想对位置模型施加约束,以便位置模型对象在具有一个或多个关联用户时不会被破坏。

考虑孟买的情况,它是一个位置,并且有一个或多个用户。因此,我无法摧毁那个地点;仅当特定位置没有用户时我才能销毁。

如何以 protected 方式处理销毁记录,例如这样?

最佳答案

您可以将位置模型更新为如下所示:

class Location << ActiveRecord::Base
  before_destroy :confirm_safe_to_destroy

  has_many: :users

private

  def confirm_safe_to_destroy
    return false if users.any?
  end
end

这将使用 before_destroy 处理程序来检查销毁位置模型对象是否安全。如果存在与该位置关联的任何用户,confirm_safe_to_destroy 方法将返回 false 以停止销毁过程。

关于ruby-on-rails - 销毁前回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254977/

相关文章:

jsf - @ViewScoped bean 在 JSF 中如何以及何时被销毁?

javascript - 过滤器黑名单

ruby-on-rails - OSX 上的 Ruby on Rails - 我是否搞砸了安装?

ruby - 有没有办法在 Ruby 中 glob 目录但排除某些目录?

ruby - 为什么在 Ruby 0.0/0、3.0/0 和 3/0 中表现不同?

ruby-on-rails - 为什么 Rails 中不存在删除/销毁的直接路径?

javascript - 实现 Rails Frontend 轮询来调用更新

ruby-on-rails -/config/initializers/secret_token.rb 未生成。为什么不?

arrays - Ruby 中的并行分配性能

x 秒后 Jquery 销毁对话框