2011-11-28 72 views
1

我有一个公司表和status_codes表 一家公司只能有一个STATUS_CODE设置Rails模型和协会

COMPANIES 
    id int PK 
    name varchar 
    status_code_id int FK 

STATUS_CODES 
id PK 
name varchar (Live, Inactive, Deleted) 

我想在铁轨有如下型号此设置/协会

class Company < ActiveRecord::Base 
    has_one :status_code 
end 

class StatusCode < ActiveRecord::Base 
    belongs_to :company 
end 

belongs_to :company出现该问题,它期待在status_codes表的外键company_id ...

我基本上想要所有的状态代码在一张表中,所以如果我需要更改状态代码名称,我只更改一次,所有公司都显示最新更新的状态代码名称...

我可以设置导轨吗数据库表格布局还是有更好的方法来做到这一点?

回答

0

我相信在这种情况下你需要StatusCode有一个has_many:companies。这样,一旦您更改了状态代码,所有公司都将显示最新更新的状态代码名称。

class Company < ActiveRecord::Base 
    belongs_to :status_code 
end 

class StatusCode < ActiveRecord::Base 
    has_many :companies 
end 

因此,您需要在您的公司表中使用status_code_id外键。

+0

感谢您的支持,这是什么方式?没有正确的读取状态代码has_many:公司 –

+0

它可能一开始没有正确读取,但如果从OO的角度来考虑它,那么它没有任何错误,您只需编码即可实现。这也不违背“rails方式”,因为它是一个简单的has_many关联。 – alexs333

0

一般的经验法则是,包含外键的关联侧应该有belongs_to :other_model,反之应该有has_many