【问题标题】: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

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2 ruby-on-rails-5


【解决方案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'
    • 这里已经解释过了:stackoverflow.com/questions/53942615/…
    • 这里的foreign_key是服装表中的superadmin_company_id。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多