我已经在我的rails应用中使用了cancan和rolify。现在我想使用它们,至少在我的rails可挂载引擎(隔离命名空间)中使用rolify。我努力了,但徒劳无功。我将角色模型放在了models/myengine/和models/中,当之前的操作失败时也是如此。它在角色适配器级别抛出错误,说明是has_role?找不到。提前谢谢。
发布于 2012-12-15 00:43:58
我在rolify上也遇到过类似的问题。我也不能让它在可安装的引擎中工作。它看起来就是不能很好地与引擎一起工作。我建议你使用simple_roles gem --这就是我所使用的,在可安装引擎中使用它是没有问题的。
UPDATE Rolify添加了对命名空间的支持,因此该支持不再有效。我已经成功地在我的引擎中使用了它。您现在可以只执行rails g rolify EngineName::Role EngineName::User
发布于 2018-12-22 03:05:52
我正在转换一个工作的Rails 4.2。应用程序集成到引擎中。这些表已经创建为“users”、“roles”和“users_roles”。
要让它在引擎内部工作,用户只需进行以下定制:
rolify role_cname: 'EngineName::Role', role_join_table_name: 'users_roles'
控制台测试:
EngineName::User.last.roles
SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 [["user_id", "xxxx"]]
EngineName::User.last.has_role? :admin
SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))) [["user_id", "xxxx"]]
https://stackoverflow.com/questions/13277583
复制相似问题