【发布时间】:2011-10-02 02:22:56
【问题描述】:
我有一个为学校构建的 Rails 应用程序。系统中的用户是跟踪孩子活动的父母(也称为家庭成员或只是成员)。教师也是用户,可以登录参与活动。 Member 模型是应用程序用来查找参与者的地方。这样可以找到教师,他们被添加到成员模型中,出于同样的原因,父母也被添加。
添加到此应用程序的教师将在每个表 user、user_member 和 member 中有一条记录。 user 中的一条记录允许他登录,member 中的 1 条记录以便他可以搜索,user_member 中的 1 条用于建立关联。在这种情况下,查找用户自己的成员记录是微不足道的。但是,如果我是一个有登录名和系统中有 2 个孩子(James 和 Brian)的父母,其中一个人会在 Members 表中找到 3 条记录,一条给 James,一条给 Brian,一条给我自己。我需要知道哪个成员记录是我的,而不是 James 或 Brian。
对此建模的最佳方法是什么?我考虑了两个选项 1) 用户表中有一个外键指向用户自己的 member_id 或 2) user_members 表有一个名为“own_member”的布尔值,表示这个 user_id 的 member_id 是用户的成员记录。有没有更可取的?再来一根铁轨吗?我将如何进行调用建立/创建关联?
当前的关系是这样建模的:
class User < ActiveRecord::Base
has_many :user_members
has_many :members, :through => :user_members
end
class UserMember < ActiveRecord::Base
belongs_to :user
belongs_to :member
end
class Member < ActiveRecord::Base
has_many :user_members
has_many :user, :through => :user_members
end
【问题讨论】:
标签: ruby-on-rails activerecord