如何跟踪ActiveRecord中的连续行



我需要对一些数据进行规范化,而且我是后端/数据库编程的新手,所以这可能很明显,但我已经搜索过了,什么也找不到。

我有一张'empires'表格。每个帝国都可以是'civilization'以下之一:

- British
- French
- Dutch
- Ottoman
- Spanish

现在,empires表包含一个名为civilization的VARCHAR(255)类型的列,这就是上面一个字符串的存储位置。

当然,后来我意识到它的可扩展性不强,也不是一个好主意,所以我决定创建另一个名为civilization的表,它包含两列,id和包含其名称的字符串。

我现在的问题是,例如,我如何确保所有'British'帝国都指向civilization表中完全相同的行?

更新2:1对多关联

class Empire < ActiveRecord::Base
attr_accessible :name
belongs_to :civilization
end
class Civilization < ActiveRecord::Base
attr_accessible :name
has_many :empires
end
british = Civilization.new(:name => 'British')
british.empires.build(:name => 'Britian')
british.empires.build(:name => 'India')
british.save
india = Empire.where(:name => 'India')
britain = Empire.where(:name => 'Britain')
puts india.civilization == britain.civilization # => true
puts india.civilization.inspect                 # => <Civilization:0x04121231 @name="British">
puts india.civilization.empires.inspect         # => [ <Empire:0x0123443 @name="Britain">, <Empire:0x0124543 @name="India"> ]

您需要empires表上的civilization_id来存储civilizations记录中的id。

最新更新