has_many:与belongs_to混合

时间:2012-06-23 23:57:01

标签: ruby-on-rails ruby-on-rails-3.2

我遇到以下情况时出现问题:用户可以在一个或多个公司工作,而公司可以为零或更多用户在那里工作。对我来说,“问题”是我需要跟踪用户负责创建公司记录的内容。

表格

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 *,并在中创建关联工作表?

这个想法后来创建了一个表单,当前用户可以选择他/她的工作地点(如果公司已经存在)或创建公司记录并注册该关联。

0 个答案:

没有答案