在销毁记录之前,我想检查它是否在其他表上有任何用途,即使记录本身不知道这些用途。
例如,假设我有一张 cost_centers
表,还有一张 areas
表。
一个区域
有一个默认的cost_center
。 cost_centers
与 areas
无关。
我可以使用哪种验证
来防止用户破坏cost_center
,以保持area
一致?
换句话说,我如何搜索数据库以找出该记录是否是任何其他表上其他记录的外键?
最佳答案
当您设计数据库时,您可能已经设置了所有引用。
在您的迁移中,它看起来像这样:t.references :cost_center
。
如果是这样,您的成本中心模型可能与包含引用的每个表具有 has_one
关系,在您的示例中,该引用将是 has_one :area
。
然后,要检查它是否实际使用,您可以对方法进行 before_destroy
回调,检查是否有任何 has_one
定义不为空:
class CostCenter < ActiveRecord::Base
has_one :area
before_destroy :check_usage
def check_usage
!self.area.nil?
end
end
关于ruby-on-rails - Rails 5.0 - 如何检查记录是否关联到另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40291088/