我大致同意 MickJ,尽管创建了 Company 和 User 模型/表(显然每个都有一个 id 列)我会这样做:
create_table "companies" do |t|
t.string "name"
...
end
create_table "positions" do |t|
t.references "user"
t.references "company"
...
end
create_table "followings" do |t|
t.references "user"
t.references "company"
...
end
楷模:
class User
has_many :positions
has_many :followings
end
class Company
has_many :positions
has_many :followings
end
class Position
belongs_to :user
belongs_to :company
end
class Following
belongs_to :user
belongs_to :company
end
您可以通过以下方式从职位中引用公司:
position = Position.first
puts position.company.name
或由用户使用类似的东西
user = User.first
user.positions.each do |position|
puts position.company.name
end
-- 编辑1:
要将公司名称从职位中提取到一个单独的表中,您最好编写一个小 rake 任务 - 例如:
Position.all.each do |position|
company = Company.find_or_initialize_by_name(position.company_name)
position.company_id = company.id
position.save
end
然后,您可能想要编写迁移以从职位表中删除公司名称列......只是为了保持整洁。