我需要对一些数据进行预测,我是后端/数据库编程的新手,所以这可能非常明显,但我已经搜索过,找不到任何东西。
我有一个'empires'
表。每个帝国都可以'civilization'
以下之一:
- British
- French
- Dutch
- Ottoman
- Spanish
现在,empires
表包含一个名为civilization
的VARCHAR(255)类型的列,这是存储上述字符串之一的位置。
现在,后来我意识到它不是很可扩展而且不是一个好主意,所以我决定创建另一个名为civilization
的表,其中包含2列,id和string,其中包含它的名称。
我现在的问题是,如何确保所有'British'
帝国都指向civilization
表格中的完全相同的行?
答案 0 :(得分:0)
更新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"> ]
您的civilization_id
表格需要empires
才能存储civilizations
条记录中的ID。