Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.2 如何在rails 3.2中的rails可安装引擎中使用Rolify?_Ruby On Rails 3.2_Cancan_Rails Engines - Fatal编程技术网

Ruby on rails 3.2 如何在rails 3.2中的rails可安装引擎中使用Rolify?

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也有类似的问题。我也不能让它在可安装的引擎内工作。看起来它就是不能很好地与发动机配合使用。我建议您改用-这就是我所用的,在可安装的引擎中使用它没有问题

我在rails应用程序中使用了cancan和rolify。现在我想在我的rails可装载引擎(隔离名称空间)中使用这些,至少rolify。我努力了,但没有成功。我将角色模型放在models/myengine/和models/中,在previor失败时也放在其中。它在角色适配器级别抛出错误,表示has_role?找不到。
提前谢谢。

我对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"]]