在另一个命名空间中添加一个模型作为外键
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。以上是关于在另一个命名空间中添加一个模型作为外键的主要内容,如果未能解决你的问题,请参考以下文章
从命名空间调用方法以在另一个 javascript 文件中使用