0
我已经设置了这样的事情我的一个项目的模型(用Rails 3.2和Mongoid 3.0):创建协会代理
class Parent
include Mongoid::Document
has_many :kids
def schools
return kids.map { |kid| kid.school }
end
end
class School
include Mongoid::Document
has_many :kids
end
class Kid
include Mongoid::Document
belongs_to :parent
belongs_to :school
end
我父模型作为一个标准用户模式,我已经与Devise合作。我想用index
和show
方法,只允许进入学校的家长在孩子一SchoolController
要做到这一点,最好的办法,根据该网站:http://www.therailsway.com/2007/3/26/association-proxies-are-your-friend/,是做这样的事情:
def index
@schools = current_user.schools
end
def show
@school = current_user.schools.find(params[:id])
end
但是,由于Mongoid不允许has_many :through
关系,因此Parent#schools
是返回数组而非关联代理的自定义方法,因此#find
不是可以使用的方法。有没有办法从一组文档创建关联代理?还是有更聪明的方法来处理这个简单的访问控制问题?