作者giive (lala)
看板Ruby
标题[RoR ] 同一组 DB table ,不同关系的设定方式
时间Tue Sep 5 13:32:39 2006
原文在我的 Blog
http://lightyror.blogspot.com/index.html
应该很多人有类似的想法吧?
今天两个 tables ,他们的关联不只一种
但是 Active Record 预设只有一种关联性
举个例子:
User 这个 table 跟 Email 这个 table 是 1:m 的关系
email 这个栏位有 user_id -> 代表这个信的收信人是谁
还有 sender_user_id -> 代表这个信的寄件人是谁
今天如果使用 ActiveReocrd 的预设方式
class User < ActiveRecord::Base
has_many :emails
end
class Email < ActiveRecord::Base
belongs_to :user
end
这样只能使用 User.emails 代表这个人有多少信件要收
但是如果我们也想用 ActiveRecord 做到 User.send_emails 这样
代表这个人有多少信件要寄呢?
我们可以使用 Virtual Model 来解决(我自己取的名字)
class User < ActiveRecord::Base
has_many :emails
has_many :send_emails , :foreign_key => 'sender_user_id'
end
class Email < ActiveRecord::Base
belongs_to :user
end
class SendEmail < Email
belongs_to :user , :foreign_key => 'sender_user_id'
end
如此就可以直接使用 User.messages还有User.send_messages
当然其实也可以用 Database 的 View Table 也是可以解决
--
lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog
http://lightyror.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.114.97
※ 编辑: giive 来自: 61.230.114.97 (09/05 13:33)