创建新的设计资源,同时以不同的设计资源登录

时间:2013-11-22 21:36:12

标签: ruby-on-rails devise

我有两个Devise模型:UserVendor。我不希望供应商自己注册,因此管理员用户(由用户表上的布尔字段控制)应该能够在登录时创建新的供应商。目前,当我在signed_in中尝试此操作时,我无法访问{{1 }}。我从服务器收到此错误:

vendors_sign_up_path

显然要访问此页面,您无法进行身份验证?似乎对大多数情况都有意义,但我怎样才能覆盖它?我已经创建了一个自定义设计供应商/注册控制器,以防止在注册后自动登录(根据this):

Filter chain halted as :require_no_authentication rendered or redirected

似乎我需要覆盖注册控制器中的其他内容才能完成此操作?非常感谢任何帮助,提前感谢!

1 个答案:

答案 0 :(得分:0)

你的路线上有这样的东西吗?

resources :admins do
  resources :vendors
end
devise_scope :vendor do
  root to: "devise/sessions#new"
end

无论如何,我的建议是在这里使用角色:

#user.rb
class User < ActiveRecord::Base
  has_many :assignments
  has_many :roles, :through => :assignments
  def has_role?(role_sym)
    roles.any? { |r| r.name.underscore.to_sym == role_sym }
  end
end


#role.rb
class Role < ActiveRecord::Base
  attr_accessible :name
  has_many :assignments
  has_many :users, :through => :assignments  
end

#assignment.rb
class Assignment < ActiveRecord::Base
  attr_accessible :user_id
  belongs_to :user
  belongs_to :role
end

通过这种方式,供应商可以注册为用户,管理员应该能够稍后将该角色更改为供应商。