在这个中使用哪个关联has_many和Rails中的三个资源?

时间:2013-06-27 17:21:40

标签: ruby-on-rails associations

我有以下资源:

- >公司拥有多家公司 - >公司所属公司 - >公司拥有多州(因此,同一家公司可以在许多州) - >州有很多公司

我的问题是公司具有以下属性:名称和描述。

公司还有一个电话号码,但该电话号码取决于公司所在的州。

以下是我从表格的角度看待它的方式:

States
id
name

Corporation
id
name

Company
id
name

Company_states
id
company_id
state_id
phone_number

我应该如何设置关联才能完成此操作?感谢。

1 个答案:

答案 0 :(得分:1)

使用has-many-through association

class Corporation
  has_many :companies
end

class Company
  belongs_to :corporation
  has_many :company_states
  has_many :states, through: :company_states
end

class CompanyState
  belongs_to :company
  belongs_to :state
end

class State
  has_many :company_states
  has_many :companies, through: :company_states
end

company = Company.new(name: 'foo', description: 'bar')
state = State.find_by_name('MA')
company.company_states << CompanyState.new(state: state, phone_number: '800-555-1212')