Ruby on rails Rails设计gem和用户组

Ruby on rails Rails设计gem和用户组,ruby-on-rails,devise,Ruby On Rails,Devise,我正在使用rails Desive gem进行用户身份验证,但现在对于我的店铺,我必须为不满意的用户、特价等引入用户组。如何使用Desive实现这一点?请注意,这是一对多,因为每个用户都可以有多个组,每个组都有一些用户 此外,当用户注册时,i't组必须为例如1 Deviate具有“关闭”控制器(与authlogic不同)。这也是麻烦 def create super group = Group.find_by_name("newuser") user_group = Us

我正在使用rails Desive gem进行用户身份验证,但现在对于我的店铺,我必须为不满意的用户、特价等引入用户组。如何使用Desive实现这一点?请注意,这是一对多,因为每个用户都可以有多个组,每个组都有一些用户

此外,当用户注册时,i't组必须为例如1

Deviate具有“关闭”控制器(与authlogic不同)。这也是麻烦

def create
    super
    group = Group.find_by_name("newuser")
    user_group = UserGroup.create
    user_group.user_id = current_user.id
    user_group.group_id = group.group_id
    user_group.save
  end

除非我看错了你的问题,否则这不一定要和Desive集成在一起。只需创建一个描述组属性的组模型和一个用户组连接模型:

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

但是如何在我的控制器中编写相同的设计注册逻辑?@PavelBY如果您覆盖注册操作,您仍然可以在覆盖操作中通过
super
调用它。对于Rails中的所有可重写方法都是如此。你想在行动中改变什么?我认为可以用另一种方式做得更好。但如何用另一种方式做呢?很简单:我需要像以前一样设计工作,但要引入用户组,这样当有人注册时,它就会给它一个组newcustomer@PavelBY你还需要多对多关系吗?按照我的示例,您可以忽略DeVICE控制器,并在保存之前向用户模型添加一个
:assign\u default\u group
,然后只需定义
assign\u default\u group
方法即可添加用户默认应属于的组。
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