好吧,我遵循github上的railsapps模板指令,在CanCan上隨意複製了ryanb的railscast(爲我的Event模型交換了Comment變量)。我已經建立了一個新用戶,併爲其賦予管理員角色的一部分能力分配給「贊助者」角色。當我在Rails中加載時,我得到設計> CanCan> Rolify錯誤分配角色
未定義的方法`角色?'對於用戶:0x08 ...
好的,我在控制檯內向後工作,以重新分配一個新用戶到「主辦方」角色,並查看是否有問題。如果你低頭看看結果,我會看到一些似乎被破壞的東西,但不確定如何解決它。這裏是我的ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= Us # guest user (not logged in)
if user.has_role? :admin
can :manage, :all
else
can :read, :all
end
if user.role? :sponsor
can :create, Event
can :read, Event
can :update, Event do |event|
event.try(:user) == user
end
else
can :read, :all
end
end
end
我event.rb:
resourcify
belongs_to :school
一所學校has_many events
,has_and_belongs_to_many_users
和belongs_to :event
。在控制檯中,我使用正確的名稱,school_id,電子郵件等創建了一個new_user,按預期工作。我然後:
user.add_role "sponsor"
這工作,我可以看到,用戶id排隊與贊助商的角色ID。下一步是我認爲我的問題開始的地方。
ability = Ability.new(new_user)
即產生以下:。
SELECT COUNT(*)FROM 「角色」 INNER JOIN 「users_roles」 ON 「角色」 的 「ID」= 「users_roles」 「ROLE_ID」 WHERE「 users_roles」。 「USER_ID」= 5 AND(((名稱= '管理員')和(RESOURCE_TYPE IS NULL)
的user_id是正確的,但在 「名稱」 不是 '管理員'。我想它應該拉'贊助商'的名字?
這可能是一個簡單的問題,但我猜這個錯誤分配可能是我爲什麼上面顯示的事件#索引錯誤出現的問題的根源。它似乎認爲Ability.new卡在「管理員」上。我在忽略什麼,thanx,山姆