Ruby on rails 3.2 如何在rails 3.2中的rails可安装引擎中使用Rolify?
我在rails应用程序中使用了cancan和rolify。现在我想在我的rails可装载引擎(隔离名称空间)中使用这些,至少rolify。我努力了,但没有成功。我将角色模型放在models/myengine/和models/中,在previor失败时也放在其中。它在角色适配器级别抛出错误,表示has_role?找不到。Ruby on rails 3.2 如何在rails 3.2中的rails可安装引擎中使用Rolify?,ruby-on-rails-3.2,cancan,rails-engines,Ruby On Rails 3.2,Cancan,Rails Engines,我在rails应用程序中使用了cancan和rolify。现在我想在我的rails可装载引擎(隔离名称空间)中使用这些,至少rolify。我努力了,但没有成功。我将角色模型放在models/myengine/和models/中,在previor失败时也放在其中。它在角色适配器级别抛出错误,表示has_role?找不到。 提前谢谢。我对rolify也有类似的问题。我也不能让它在可安装的引擎内工作。看起来它就是不能很好地与发动机配合使用。我建议您改用-这就是我所用的,在可安装的引擎中使用它没有问题
提前谢谢。我对rolify也有类似的问题。我也不能让它在可安装的引擎内工作。看起来它就是不能很好地与发动机配合使用。我建议您改用-这就是我所用的,在可安装的引擎中使用它没有问题 更新
Rolify增加了对名称空间的支持,因此不再有效。我已经成功地在我的引擎中使用了它。现在,您只需执行rails g角色化EngineName::Role EngineName::User我正在转换工作的rails 4.2。将应用程序安装到引擎中。表已创建为“用户”、“角色”和“用户/角色” 要使其在引擎内工作,用户只需进行以下自定义:
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"]]