我遇到以下情况时出现问题:用户可以在一个或多个公司工作,而公司可以为零或更多用户在那里工作。对我来说,“问题”是我需要跟踪用户负责创建公司记录的内容。
表格
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.timestamps
end
end
end
class CreateCompanies < ActiveRecord::Migration
def change
create_table :companies do |t|
t.integer :user_id
t.string :name
t.timestamps
end
end
end
class CreateWorks < ActiveRecord::Migration
def change
create_table :works do |t|
t.integer :user_id
t.integer :company_id
t.timestamps
end
end
end
模型
class User < ActiveRecord::Base
attr_accessible :name
has_many :companies
has_many :works
has_many :companies, :through => :works
end
class Company < ActiveRecord::Base
attr_accessible :name, :user_id
belongs_to :user
has_many :works
has_many :users, :through => :works
end
class Work < ActiveRecord::Base
attr_accessible :company_id, :user_id
belongs_to :user
belongs_to :company
end
我必须如何创建公司记录(如果它不存在),请在公司表中注册创建者的* user_id *,并在中创建关联工作表?
这个想法后来创建了一个表单,当前用户可以选择他/她的工作地点(如果公司已经存在)或创建公司记录并注册该关联。