2
一個Form
belongs_to的UserGroup
內限制物品的數量。某些角色無法創建多於一個的Form
,其類型爲「每個UserGroup
」的「improvement_points」。我想用CanCan(1.6.x)來實現它。但是如何?使用慘慘的關係
在我的視圖和控制器我想能夠說:
link_to("New Form", new_form_path) if can? :create, Form, @user_group
或任何類似,像Form.new(:user_group => @user_group)
就行了。
有關部分從我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
問題是,我不知道如何爲 user_group_id的背景下通過。我試圖Rianbs description on this,但這似乎不適用於我的情況,因爲我需要專門檢查要創建的項目數量。
cancan是正確的工具嗎?我已在Form model
上進行了一些驗證,以在較低級別強制實施這種每組一次的行爲;我應該問形式模型而不是能力?