作者giive (lala)
看板Ruby
标题自我的 n:m mapping 设定方式
时间Fri Oct 13 06:47:52 2006
出自我的Blog
http://lightyror.blogspot.com/2006/10/nm-mapping.html
在 Active Record 中
n : m 一向是使用 has_many_and_belongs_to_many 来设定之间的关系
我们必须先有两个具有 n:m 关系的 table
并且要有一个 mapping table
然後设定其中的关系
但是如果 自己对自己有 n:m 关系怎办?
举个最常见到的例子
人有许多朋友,但是朋友也是人呀
也就是说,Person 跟 Person 之间的朋友关系是属於 n:m
在实做上,要实做两个 table ,people 还有 friends
* table people 拥有 id , name , password ..... 之类的 column
* table friends 是 join table ,只有两个 column ,person_id 还有 friend_id,都是指回 people 的 foreign key
我们想设定Person 自我的 n:m 关系怎麽办?
请在 person 这个 model 设定
has_and_belongs_to_many :friends, :class_name => "Person", :join_table => "friends", :association_foreign_key => "friend_id", :foreign_key => "person_id"
* :class_name 代表你这个关系是跟 Person 这个 Model 有关系
* :join_table 代表 mapping table 是 friends 这个 table
* :association_foreign_key => "friend_id", :foreign_key => "person_id" 就是相关的 foreign key 栏位
当这样设好後
你就可以使用
a = Person.find(1)
a.friends.each { |i| i.name ..... } # 每个 i 都是 Person model
之类的用法
--
lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog
http://lightyror.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.100.195