首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Ruby on Rails,一对一联系关系(One-to-One)

2012-12-25 
Ruby on Rails,一对一关联(One-to-One)在上一篇文章中,我们列举了对象之间可能出现的关联关系。接下来,逐个

Ruby on Rails,一对一关联(One-to-One)

在上一篇文章中,我们列举了对象之间可能出现的关联关系。接下来,逐个分析一下每一种关系如何在Ruby on Rails中实现和使用。


场景1:一对一关联一般用于一个东西A有且只有一个B,比如
    雇员 has_one:电脑    教室 has_one:老师

他们的特点是,对象之间存在唯一的拥有关系。如果一个雇员也可以有多台电脑,不过这就不是今天的话题了,那是一对多关系(One-to-Many)。

场景2:将一张表的内容分离成两张(多张)表,比如
    病人 has_one:住院档案    顾客 has_one: 账单地址

他们的特点是,本来这些信息可以放在同一个表中,通过不同的列表示属性。不过为了逻辑更为清晰,将比较独立的属性从主表中拆分出来单独存储。还有一个好处就是,好多情况下主表(病人)信息被访问的几率较大,而从表(住院档案)属性很多并且查询几率较少时,将一个大表分离为多个表可以提高数据库使用效率。

不过说实话,实际应用中依然是较少有机会使用一对一关联,取而代之的应该是一对多关联。

举个例子,一般来说一个顾客只有一个账单地址。但是貌似应该也有多个账单地址的情况。建立对象关系的时候还是要考虑使用一对多关联以应对这种变化。


有两点值得注意,以A has B = B belongs to A为例
第1:A是主表,B是从表。
第2:A中id的主键值,在B中作为关联用的外键值。

第3:一般来说需要在A、B类中定义对方的引用,以便能够通过一方找到另一方。


从头开始创建教室和老师模型类

> class_room.teacher = teacher> teacher.class_room = class_room> class_room.teacher=> #<Teacher id: 1, class_room_id: 1, name: "abbuggy", created_at: "2012-12-08 17:36:05", updated_at: "2012-12-08 17:37:05"> 


热点排行
Bad Request.