0

我有以下资源:

-> Corporation has_many Companies
-> Company belongs_to company
-> Company has_many state(因此,同一公司可以在多个州)
-> State has_many Companies

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

公司也有一个电话号码,但该电话号码因公司所在的州而异。

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

States
id
name

Corporation
id
name

Company
id
name

Company_states
id
company_id
state_id
phone_number

我应该如何设置关联来完成这个?谢谢。

4

1 回答 1

1

使用has-many-through 关联

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')
于 2013-06-27T17:29:10.517 回答