我在建立数据库关系方面遇到困难,如果有人能给我一点帮助,我会非常感激!
我有一个名为人的表,另一个名为公司,公司有很多人,人员属于公司
这里的技巧公司has_many Person投掷了一个名为person 的属性,has_many Person投掷了另一个名为administrator的属性
可以看得像
Coca-cola = Company.new
jonathan = Person.new / nicolas = Person.new
Coca-cola : {
person: jonathan,nicolas
administrator: nicolas
}
我做了第一次迁移:
def change
add_reference :persons, :person, index: true
add_reference :persons, :administrator, index: true
add_foreign_key :persons, :companys, column: :person_id
add_foreign_key :persons, :companys, column: :administrator_id
end
然后我将此关系添加到我的模型
class Company < ApplicationRecord
has_many :persons,
:class_name => "Person",
:foreign_key => "person_id"
has_many :administrators,
:class_name => "Person",
:foreign_key => "administrator_id"
end
和
class Person < ApplicationRecord
belongs_to :person,
:class_name => "Company",
optional: true
belongs_to :administrator,
:class_name => "Company",
optional: true
end
不幸的是,这不起作用,导致问题的任何导致?
非常感谢。
乔纳森。
答案 0 :(得分:1)
如果我理解你的问题,请告诉我。要求是:
我猜您可以使用以下代码解决:
class ChangePersons < ActiveRecord::Migration
def change
add_column :persons, :administrator, :boolean, default: false
end
end
class Company < ApplicationRecord
has_many :persons, -> { where(administrator: false) }
has_many :administrators,
class_name: "Person",
foreign_key: "person_id",
-> { where(administrator: true) }
end
class Person < ApplicationRecord
belongs_to :company
end