我使用 STI 向我的 Spree::User 模型类添加了继承。我有一个 :type 列,它可以是(Spree::Guest、Spree::Writer 或 Spree::Reader)。
在管理端的身份验证中,我只想验证作者和读者。解决此问题的最佳选择是什么?
我试图将创建操作覆盖为:
def create
authenticate_spree_user!
if spree_user_signed_in? && (spree_current_user.role?(:writer) || spree_current_user.role?(:reader))
respond_to do |format|
format.html {
flash[:success] = Spree.t(:logged_in_succesfully)
redirect_back_or_default(after_sign_in_path_for(spree_current_user))
}
format.js {
user = resource.record
render :json => {:ship_address => user.ship_address, :bill_address => user.bill_address}.to_json
}
end
else
flash.now[:error] = t('devise.failure.invalid')
render :new
end
end
在这种情况下,当尝试使用 :guest 类型的用户进行身份验证时,它会重定向到带有无效失败消息 (ok) 的新操作,但不知何故用户获得了身份验证 (nok)。