除非我读错了您的问题,否则这不一定必须与设计集成。只需创建一个描述组属性的组模型和一个用户组连接模型:
class UserGroup < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
class User < ActiveRecord::Base
has_many :user_groups
has_many :groups, :through => :user_groups
# attr_accessible :user_id, :group_id
end
class Group < ActiveRecord::Base
has_many :user_groups
has_many :users, :through => :user_groups
end
至于关闭控制器问题,您可以将 Devise 控制器提升到您的应用程序中,或者创建一个从它继承的新控制器,从而覆盖方法。从他们的链接 GitHub 页面阅读更多信息。
编辑:我认为你从错误的角度来处理这个问题。您无需在 Devise 的控制器中执行任何操作,只需将before_save
回调添加到您的用户模型。
class User < ActiveRecord::Base
before_save(:on => :create) :assign_default_group
# Other model stuff here
private
def assign_default_group
# This automatically creates the UserGroup record
self.groups << Group.find_by_name("User")
end
end