我试图在Rails 4中制作一个应用程序。
我使用CanCanCan作为权限,Role_Model用于角色管理。
在我的ability.rb中,我将学生能力定义为:
elsif user.try(:profile).present? && user.profile.has_role?(:student)
student_abilities然后:
def student_abilities
can :read, Project.visible.current.available在我的project.rb中,我将作用域定义为:
scope :visible, lambda { joins(:sweep => :disclosure).where('disclosures.allusers' => 'true')
.joins(:sweep => :finalise).where('finalises.draft' => 'false') }
scope :current, lambda { where('project.start_date >= ?', Date.today)}
scope :available, lambda { where('closed =', 'false')}当我试图启动服务器并生成视图时,我会得到以下错误:
NoMethodError at /project_invitations
undefined method `available' for #<Project::ActiveRecord_Relation:0x007fdde41f2ee8>当我尝试从能力的末尾删除可用时,这样做是公正的:
can :read, Project.visible.current我知道这个错误:
entry for table "project"
LINE 1: ..." = 'true' AND "finalises"."draft" = 'false' AND (project.st...
^我不知道为什么它不让我阅读错误信息的结尾。
有人能看到我做错了什么吗?
发布于 2015-10-03 21:57:54
where('closed =', 'false'),而不是where(closed: false),以最小化识别SQL的片段的数量。https://stackoverflow.com/questions/32927757
复制相似问题