在另一个命名空间中添加一个模型作为外键

Posted

技术标签:

【中文标题】在另一个命名空间中添加一个模型作为外键【英文标题】:Add a model in the present in the other namespace as foreign key 【发布时间】:2019-05-25 05:50:31 【问题描述】:

在 Rails 中,我想将 model_id 作为外键包含在另一个名称空间中存在的另一个模型中。 我有两个模型 第一:

class Garment < ApplicationRecord
end

第二:

class Superadmin::Company < ApplicationRecord
end

我正在使用以下命令。

 rails g migration addCompanyIdToGarment company:references

输出如下:

class AddCompanyIdToGarment < ActiveRecord::Migration[5.0]
  def change
    add_foreign_key :garments, :company
  end
end

不正确,请提供正确的命令或过程。 数据库中表的名称为:

superadmin_companies 
garments

【问题讨论】:

是 db superadmin_companies 中公司的表名?? 是的表名是 db superadmin_companies 【参考方案1】:

我想出了一个办法,即。 修改迁移为:

class AddCompanyIdToGarment < ActiveRecord::Migration[5.0]
  def change
    add_reference :garments, :superadmin_companies, foreign_key: true
  end
end

【讨论】:

【参考方案2】:

生成迁移的命令:

rails g migration addCompanyIdToGarment superadmin_company:references

迁移文件:

class AddCompanyIdToGarment < ActiveRecord::Migration[5.1]
  def change
    add_reference :garments, :superadmin_company, foreign_key: true
  end
end

【讨论】:

如果您在模型中添加了 has_many 和 belongs_to 关联,请使用以下代码:superadmin_company = Superadmin::Company.find_by(id: params[:id])superadmin_company.garments 它给出错误:未知列'garments.company_id' 这里已经解释过了:***.com/questions/53942615/… 这里的foreign_key是服装表中的superadmin_company_id。

以上是关于在另一个命名空间中添加一个模型作为外键的主要内容,如果未能解决你的问题,请参考以下文章

在另一个命名空间中自动加载命名空间时出错

如何在另一个 C++ 命名空间内的全局命名空间中定义朋友?

调用在另一个命名空间中定义的 PHP 函数,不带前缀

从命名空间调用方法以在另一个 javascript 文件中使用

我应该在另一个命名空间中使用实体框架 DBContext 的部分类吗

cpp►命名空间namespace