我有两个Devise模型:User
和Vendor
。我不希望供应商自己注册,因此管理员用户(由用户表上的布尔字段控制)应该能够在登录时创建新的供应商。目前,当我在signed_in中尝试此操作时,我无法访问{{1 }}。我从服务器收到此错误:
vendors_sign_up_path
显然要访问此页面,您无法进行身份验证?似乎对大多数情况都有意义,但我怎样才能覆盖它?我已经创建了一个自定义设计供应商/注册控制器,以防止在注册后自动登录(根据this):
Filter chain halted as :require_no_authentication rendered or redirected
似乎我需要覆盖注册控制器中的其他内容才能完成此操作?非常感谢任何帮助,提前感谢!
答案 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
通过这种方式,供应商可以注册为用户,管理员应该能够稍后将该角色更改为供应商。