我正在尝试在两个模型之间创建关联:
class Person
include DataMapper::Resource
property :id, Serial
property :name, String
end
class Country
include DataMapper::Resource
property :id, Serial
property :name, String
end
我只需要在Person(country_id
)上建立一个简单的关系。
我的第一个想法是在Person上添加has 1
属性:
class Person
include DataMapper::Resource
property :id, Serial
property :name, String
has 1, :country
end
而不是Person表上的country_id
,Datamapper在Country上创建了person_id
。
为了得到我需要的东西,我不得不反过来:
class Country
include DataMapper::Resource
property :id, Serial
property :name, String
has 1, :person
end
这样我在Person表上得到了country_id
字段,但这对我来说没有任何意义。
我是否误解了某些内容,或者是否有其他方法可以建立此关联?
答案 0 :(得分:0)
每当模特A"有"模型B(一个或多个),您将外键添加到模型B。
这个的另一面是"属于" - 那是你用外键放在Model上的东西。
我想在DataMapper中你不必明确添加外键列,但如果你愿意,你仍然可以这样做。
[1, 2, 3] maps to 2 x 3 x 5 = 30
[3, 2, 1] maps to 5 x 3 x 2 = 30
由于人员中的外键,您使用"属于"。看起来像#34;有一个"同样的东西,但它不是。你通常只需要"有一个"在特殊情况下,如一对一的关系。
# Person
property :country_id, Integer