我是一名从事 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/