我正在使用Rails 3和Devise。
我可以有2种类型的用户,我称之为'admin'和'client',两者都存储在Users表中,区别于布尔'admin'列的值。
可以通过两种方式创建“管理员”:
1)创建新帐户后 - 在这种情况下,我们还创建了一个关联的“业务”记录
2)来自现有帐户(因此一个'业务'可以有多个'管理员') - 如果我们想将其与现有业务记录相关联
可以通过1种方式创建“客户”:
1)从与上面用于创建“管理员”的表单不同的表单
在所有3个案例中,将使用不同的表格。提交后,他们都有不同的要求:
我应该为不同的用户类型使用相同的控制器,还是将它们分开?如果它们应该相同,它如何知道它应该创建什么类型的用户?
模特怎么样?
关于如何设计这个的任何想法?
非常感谢。
答案 0 :(得分:0)
您可以使用一个控制器执行不同操作,并将表单指向这些操作:
form_tag(:controller => "people", :action => "search", :method => "get")
答案 1 :(得分:0)
我最初的猜测是从名为User
和Admin
的{{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文档。