Ruby on rails Rails设计gem和用户组
我正在使用rails Desive gem进行用户身份验证,但现在对于我的店铺,我必须为不满意的用户、特价等引入用户组。如何使用Desive实现这一点?请注意,这是一对多,因为每个用户都可以有多个组,每个组都有一些用户 此外,当用户注册时,i't组必须为例如1 Deviate具有“关闭”控制器(与authlogic不同)。这也是麻烦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
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