各种用户类型和帐户创建表单的体系结构

时间:2010-12-09 17:07:37

标签: ruby-on-rails architecture devise

我正在使用Rails 3和Devise。

我可以有2种类型的用户,我称之为'admin'和'client',两者都存储在Users表中,区别于布尔'admin'列的值。

可以通过两种方式创建“管理员”:

1)创建新帐户后 - 在这种情况下,我们还创建了一个关联的“业务”记录

2)来自现有帐户(因此一个'业务'可以有多个'管理员') - 如果我们想将其与现有业务记录相关联

可以通过1种方式创建“客户”:

1)从与上面用于创建“管理员”的表单不同的表单

在所有3个案例中,将使用不同的表格。提交后,他们都有不同的要求:

  • 我想向每个人发送不同的电子邮件。
  • 在上面的第一个'admin'案例中,我需要检查所请求的业务网址是否唯一,在第二种情况下我不需要。而在客户案例中,我没有。
  • 在第一个'admin'的情况下,我想在完成帐户后创建一些默认数据库条目,但不是在第二种情况下。
  • 创建“客户”帐户时,我想执行一些特定于该帐户类型的其他操作。

我应该为不同的用户类型使用相同的控制器,还是将它们分开?如果它们应该相同,它如何知道它应该创建什么类型的用户?

模特怎么样?

关于如何设计这个的任何想法?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用一个控制器执行不同操作,并将表单指向这些操作:

form_tag(:controller => "people", :action => "search", :method => "get")

来自rails form helpers

答案 1 :(得分:0)

我最初的猜测是从名为UserAdmin的{​​{1}}创建两个子类。有点像这样:

Client

接下来,您可以在class User < ActiveRecord::Base end class Admin < User devise :database_authenticatable, :etc after_create :create_business validates_uniqueness_of :business_url # etc end class Client < User devise :database_authenticatable, :etc # etc end 中添加不同的表单:

config/routes.rb

请务必阅读Rails中的STI并阅读Devise文档。