Ruby on rails 使用CanCan限制关系中的项目数量
Ruby on rails 使用CanCan限制关系中的项目数量,ruby-on-rails,cancan,Ruby On Rails,Cancan,表单属于用户组。某些角色不能创建多个表单,每个用户组键入“改进点”。我想用CanCan(1.6.x)实现这一点。但是怎么做呢 在我看来,我想说: link_to("New Form", new_form_path) if can? :create, Form, @user_group 或者类似的东西,比如Form.new(:user\u group=>@user\u group)就可以了 my ability.rb中的相关部分: class Ability include CanCan::
表单
属于用户组
。某些角色不能创建多个表单
,每个用户组
键入“改进点”。我想用CanCan(1.6.x)实现这一点。但是怎么做呢
在我看来,我想说:
link_to("New Form", new_form_path) if can? :create, Form, @user_group
或者类似的东西,比如Form.new(:user\u group=>@user\u group)
就可以了
my ability.rb中的相关部分:
class Ability
include CanCan::Ability
def initialize(user)
if user.is_coach?
cannot :create, Form, :type => "improvement_points" do |form|
# Allow no more than one Form per group.
Form.where(:user_group_id => user_group.id).count > 0
end
end
end
end
问题是我不知道如何在上下文中传递
用户\组\ id。我已经尝试过,但这似乎不适用于我的情况,因为我需要专门检查要创建的项目数量
cancan是正确的工具吗?我已经在
表单模型上进行了一些验证
,以在较低的级别上实施每个组的这种行为;我应该问一下表单模型而不是能力吗?也许cancan可以做到这一点,但感觉像是你在推动它。我会把这个逻辑放在控制器里
def create
if condition_that_is_hard_to_write_in_ability_rb?
raise CanCan::AccessDenied, "Helpful message about what to do instead"
end
end