ruby-on-rails - Rails 5.0 - 如何检查记录是否关联到另一个表?

标签 ruby-on-rails database postgresql validation ruby-on-rails-4

在销毁记录之前,我想检查它是否在其他表上有任何用途,即使记录本身不知道这些用途

例如,假设我有一张 cost_centers 表,还有一张 areas 表。

一个区域有一个默认的cost_centercost_centersareas 无关。

我可以使用哪种验证来防止用户破坏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/

相关文章:

ios - 如何在 PhoneGap 应用程序中在 iOS 上存储大量数据?

mysql - 带有索引和约束的 Postgres UUID

sql - PostgreSQL:根据间隔对列进行分组

ruby-on-rails - Simple Rails 数组未保存到数组列

ruby-on-rails - Rails Date 与 Date.today 相比

ruby-on-rails - 如何从 Rails 中的 Controller 中过滤关联记录?

sql - 如何通过 Rails 迁移设置 Postgres 中主键 (ID) 列的起点

ruby-on-rails - ruby rails : Is it better to validate in the model or the database?

php - JSON 在我的应用程序中返回 [null,null]

postgresql - 如何将 docker 容器添加到现有的 docker 网络