【发布时间】:2012-10-02 04:42:57
【问题描述】:
我有一个用户表,其中教师和学生之间存在自我参照关系。目前,学生通过instructor_id foreign_key 与他们的导师相关联。学生永远有导师,而导师永远不会是学生。
话虽如此,就授权而言,如果用户的instructor_id 字段具有值,是否可以简单地确定用户是否是学生,反之亦然?还是我应该明确定义用户角色?
【问题讨论】:
标签: ruby-on-rails-3 conventions user-roles
我有一个用户表,其中教师和学生之间存在自我参照关系。目前,学生通过instructor_id foreign_key 与他们的导师相关联。学生永远有导师,而导师永远不会是学生。
话虽如此,就授权而言,如果用户的instructor_id 字段具有值,是否可以简单地确定用户是否是学生,反之亦然?还是我应该明确定义用户角色?
【问题讨论】:
标签: ruby-on-rails-3 conventions user-roles
首先,我会尝试找到一些方法使其不自引用。也许通过只制作一个persons表并有一个单独的表作为链接(users.instructor_id链接到instructors,其中有instructor_id和user_id字段,instructors.instructor_id在users.instructor_id中使用,然后你可以查询 SELECT * FROM users WHERE EXISTS (SELECT * FROM instructors WHERE instructors.user_id = users.user_id) 以获取当前教师的列表),或者最好的情况是有一个学生表和一个教师表。
如果您确定没有讲师会有讲师 ID,那么我相信您应该能够通过该字段为空(或默认值为 -1)来检查用户是否是学生。
我建议将您的表结构重建为非自引用的,从长远来看,当教师被分配给另一名教师或学生出于某种原因进行教学时,它将对您有所帮助。
【讨论】: