Ruby on rails 创建一个假的有很多关系-一个依赖于其他成员变量的关系

Ruby on rails 创建一个假的有很多关系-一个依赖于其他成员变量的关系,ruby-on-rails,activerecord,has-many,Ruby On Rails,Activerecord,Has Many,我的应用程序有一个带有一些简单访问级别检查的用户模型。此访问级别确定对数据库中其他模型的访问范围。准确地说,我有地区、学校、教师、房间和学生模型。管理员可以查看所有记录,学区可以查看所有儿童学校、教师、教室和学生,校长可以查看所有儿童教师、教室和学生,教师可以查看所有儿童教室和学生 这是通过将用户对象与一个或多个模型级别关联来实现的 belongs_to :district belongs_to :school belongs_to :teacher 因此,学校校长将有一个地区id和一个学校i

我的应用程序有一个带有一些简单访问级别检查的用户模型。此访问级别确定对数据库中其他模型的访问范围。准确地说,我有地区、学校、教师、房间和学生模型。管理员可以查看所有记录,学区可以查看所有儿童学校、教师、教室和学生,校长可以查看所有儿童教师、教室和学生,教师可以查看所有儿童教室和学生

这是通过将用户对象与一个或多个模型级别关联来实现的

belongs_to :district
belongs_to :school
belongs_to :teacher
因此,学校校长将有一个地区id和一个学校id,但其教师id将为空

通过以下功能控制对儿童的访问:

def teachers
    if is_admin?
        Teacher.all
    elsif is_district_head?
        district.teachers
    elsif is_principal?
        school.teachers
    else
        [ teacher ]
    end
end
这个func在代码中被视为一个普通的老函数,有很多关系,我们可以在其中执行以下操作:

current_user.teachers.find param[:teacher_id]
current_user.teachers.each {|t| puts t.id }
无论当前用户是管理员还是教师或介于两者之间的任何人,都会返回正确数量的教师

可惜的是,事实并非如此。只有实际的has\u many关系才能完全工作,我的伪关系在我尝试使用时失败。查找或某些特定于has\u many创建的ActiveRecord集合的函数

那么,关于我的问题。如何在不显式调用has\u many函数的情况下返回ActiveRecord集合对象

如果你认为我是一个流血的弱智,而我遗漏了一些非常明显的东西,请不要犹豫,告诉我吧!我一直认为这个系统运行得很好,直到我不得不使用.find-off管理员级别的用户帐户。它基本上是在运行

Teacher.all.find :conditions => 'xyz'

…不幸的是,这将返回一个枚举器对象,而不是教师模型的ActiveRecord。

基本上,您有四个角色(管理员、区长、校长和教师(?)。每个用户都有其中一个角色,您有一组规则来确定每个角色的访问权限。对吗


这个问题已经解决了。我会敦促您考虑授权系统,如康康或声明性授权。两者都包含处理您在这里遇到的问题的简单方法。有一个学习曲线或课程,但时间会花得很好。

坎坎看起来很棒,但它不太适合我在这里所追求的。我之所以以这种方式组织模型,是因为我必须这样做。学区、学校、教师、教室和学生的继承权对于我需要如何处理数据是至关重要的,而且用户模型必须能够“附加”到任何级别(至少在班级以上)编辑:经过思考:不管怎样,我想知道是否有可能伪造ActiveRecord集合。