设计没有设计路线的模型

时间:2016-05-07 08:38:26

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我有两个共享一些文件的Rails项目,一个是实际应用程序,另一个是应用程序的管理工具。他们共享迁移,模型,一些配置等。管理工具是ActiveAdmin 1.0.0-pre2,Rails的版本是4.2。

我有两个Devise模型,User和AdminUser。在app项目中,没有admin_user的路由,我想保持这种方式,但是如果我不添加:

devise_for :admin_users

到routes文件,我得到各种奇怪的错误,例如:

ActionView::Template::Error: undefined method `admin_user_confirmation_url' for #<ActionDispatch::Routing::RoutesProxy:0x007fc613ecde08>

或:

Could not find a valid mapping for <AdminUser ...>

每当我在app项目中创建AdminUser时(样本数据生成)。

如何在没有路线的情况下实现设计模型?

2 个答案:

答案 0 :(得分:0)

如果您只想要管理员的模型,拥有一些方法和数据,请从管理员用户迁移和模型中删除所有设计条目(database_authenticatable等),并将其用作普通的activerecord模型。如果您需要任何特定的设计模块,可以逐个添加。但是您添加的设计模块可能需要控制器和路由存在。

答案 1 :(得分:0)

如果我是你,我会怎么做:

  1. 将两个应用程序合并为一个。
  2. 在用户迁移中创建一个新字段,并将其命名为&#34; role&#34;,默认值为&#34; user&#34;
  3. 使用Cancan或类似设置根据角色设置不同的权限(&#34;用户&#34;或&#34; admin&#34;)。例如,具有角色&#34; user&#34;无法查看任何管理页面。这样,无论谁是您网站的管理员,都不需要有一个单独的模型/帐户来登录活动管理员。
  4. 不要误解我的意思,我无法想出将双方视为不同项目的充分理由。它只会给你的逻辑和实现增加问题,你将不得不经常传递信息。我实际上按照上面解释的方式使用ActiveAdmin,一切都像魅力一样。