首先,我的联想:
Form has_many :agreements
Agreement belongs_to :student
我正在尝试定义当前用户的一项能力,can :read, Form
当其协议之一属于当前用户时。
我试图定义这样的能力:
Ability.rb:
can :read, Form do |f|
f.agreements.select { |a| a.student_id == user.id }.nil? == false
end
我也试过:
can :read, Form, agreements: { student_id: user.id }
不幸的是,第一个解决方案允许所有学生查看所有表格,即使他们没有附加到其中一个表格协议。第二种解决方案不允许任何学生查看表格,即使他们附加到表格的协议之一。
我究竟做错了什么?