【问题标题】:has_and_belongs_to_many relations in Rails 4Rails 4 中的 has_and_belongs_to_many 关系
【发布时间】:2014-06-05 18:27:51
【问题描述】:

我需要在 BeautySalonEmployee 和 BeautySalonService 模型之间添加关系。有如下迁移:

class CreateBeautySalonEmployeesBeautySalonServices < ActiveRecord::Migration
  def change
    create_table :beauty_salon_employees_beauty_salon_services, id: false do |t|
        t.belongs_to :beauty_salon_employee
        t.belongs_to :beauty_salon_service
    end

    add_index :beauty_salon_employees_beauty_salon_services, [:beauty_salon_employee_id, :beauty_salon_service_id], unique: true, name: 'employee_service'
    add_index :beauty_salon_employees_beauty_salon_services, :beauty_salon_employee_id, name: 'employee'
    add_index :beauty_salon_employees_beauty_salon_services, :beauty_salon_service_id,  name: 'service'
  end
end

型号:

class BeautySalonEmployee < ActiveRecord::Base
  has_and_belongs_to_many           :beauty_salon_services
end

class BeautySalonService < ActiveRecord::Base
    has_and_belongs_to_many :beauty_salon_employees
end

现在当我尝试执行以下命令时:

BeautySalonEmployee.first.beauty_salon_services.build

我收到以下错误:

ActiveRecord::StatementInvalid: Could not find table 'beauty_salon_employees_services'

我做错了什么?提前致谢。

【问题讨论】:

  • 似乎 Rails 在帮助您方面有点过分热心。它将表名压缩为更合理的格式。将连接表更改为beauty_salon_employees_services
  • 很好,但是你能给我举个例子,如何使用 create 建立一个新的关系!方法?

标签: ruby-on-rails


【解决方案1】:

像这样在您的模型中提供 join_table 选项

class BeautySalonEmployee < ActiveRecord::Base
  has_and_belongs_to_many :beauty_salon_services,:join_table => :beauty_salon_employees_beauty_salon_services
end

class BeautySalonService < ActiveRecord::Base
  has_and_belongs_to_many :beauty_salon_employees,:join_table => :beauty_salon_employees_beauty_salon_services
end

目前 Rails 正在寻找一个不存在的表 beauty_salon_employees_services。所以你必须提到这样的连接表。

Source

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多