【问题标题】:Rails one to many through a relationship table通过关系表一对多的 Rails
【发布时间】:2014-08-03 16:23:57
【问题描述】:

我有一个通过连接表 company_user 拥有许多用户的公司。每个用户只能为一家公司工作。这是一对多的关系。

我已经四处寻找,并在https://stackoverflow.com/a/7080017/883102找到了解决方案

但我得到了错误

PG::UndefinedTable: 错误: 关系“公司”不存在 第 5 行:在哪里 a.attrelid = '"companies"'::regclass

当我尝试创建公司时。我该如何解决这个问题?

我的模特是

公司

class Company < ActiveRecord::Base
  has_many :employments
  has_many :users, :through => :employments
end

用户

class User < ActiveRecord::Base
  ...
end

就业

class Employment < ActiveRecord::Base
  belongs_to :company
  belongs_to :user
end

我的联接表的迁移是

create_table :employment do |t|
    t.belongs_to :company
    t.belongs_to :user
    t.timestamps
end

我的 schema.rb

create_table "company", force: true do |t|
  t.integer  "rating"
  t.integer  "phone"
  t.string   "name"
  t.string   "address"
  t.string   "email"
  t.datetime "created_at"
  t.datetime "updated_at"
end

create_table "employment", id: false, force: true do |t|
  t.integer  "company_id"
  t.integer  "user_id"
  t.datetime "created_at"
  t.datetime "updated_at"
end

create_table "users", force: true do |t|
  t.string   "name"
  t.string   "email"
  t.datetime "created_at"
  t.datetime "updated_at"
  t.string   "password_digest"
  t.string   "remember_token"
  t.string   "role"
end

【问题讨论】:

  • 当我认为你需要 company_users(复数)时,你创建了表 company_user
  • 嗨,我试过了,但不幸的是没有快乐。
  • 你能发一下 scheme.rb 让我看看你有什么吗?

标签: ruby-on-rails postgresql activerecord


【解决方案1】:

您好,我在这里找到了答案 https://stackoverflow.com/a/24318236/883102

问题是我的表名是单数形式,我在迁移中更改了这些,然后重新创建了数据库。现在似乎一切正常。

我的 User 类最终变成了

class User < ActiveRecord::Base
  has_one :employment
  has_one :company, :through => :employment
end

这是为了允许双向关联

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2016-04-18
    • 2015-02-15
    相关资源
    最近更新 更多