Tag: 设计

从自定义控制器操作(Rails)注销设计会话

如何从自定义控制器退出设计会话? 我们有内置function吗? 就像我们对user_signed_in?

我的设计控制器rspec中的“post create”问题

[好吧……我的第一个问题,所以要温柔。] 我正在使用设计进行身份validation,但我有自己的控制器来扩展创建用户时发生的事情。 我在注册时(注册)创建了“用户”和“代理商”。 在路线…… devise_for :users, :controllers => {:registrations => “registrations”} 我的完整控制器…… class RegistrationsController < Devise::RegistrationsController def create super # creates the @user @agency = Agency.create! params[:agency] @agency.users << @user @agency.owner = @user @user.agency = @agency @agency.save @user.account_admin = true @user.save end end 我的问题是我想设置一个rspec来检查这段代码。 代码似乎正在工作,但我在我的规格中拍摄100%的代码覆盖率。 这是我的整个规范…… require ‘spec_helper’ describe RegistrationsController do render_views describe “POST create” […]

如何使用Devise锁定用户?

我想在我的应用程序中为帐户持有者用户添加订阅类型function,以便在固定的时间间隔后他们将无法访问其帐户? 注意:我不想从数据库中删除他们的帐户。 我已经在我的应用程序中安装了devise-2.1.2 。 有没有人知道怎么办? 我是Ruby on rails新手,所以如果你能解释一下这对我很有帮助。

Rspec测试失败,truenthicate_client无法正常工作

我正在将遗留项目升级到rails 5,并且在失败的rspec测试中我有一个说: Failure/Error: expect(response).to be_redirect expected `#<ActionDispatch::TestResponse:0x00007fbe5fde51f0 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Thread::…ch::Http::Headers:0x00007fbe5fdde9e0 @req=#>>>.redirect?` to return true, got false # ./spec/controllers/search_controller_spec.rb:86:in `block (3 levels) in ‘ 我正在使用devise gem来validation客户端。 测试如下: describe SearchController do before(:each) do @client = FactoryGirl.create(:client) end describe “authenticated search” do # a bunch of tests end describe “unauthenticated search” do it “requires a user to be […]

Rails,Devise和Omniauth – 设置问题

我正在尝试(再次)使用Rails 4,devise和omniauth设置身份validation。 我试着按照这篇文章中的例子: Rails 4,Devise,Omniauth(有多个提供者) 我安装了这些gem: gem ‘devise’ gem ‘omniauth-google-oauth2’ gem ‘omniauth-facebook’ gem ‘omniauth-twitter’ gem ‘omniauth-linkedin-oauth2’ gem ‘oauth2′ 我有一个用户模型和一个身份validation模型。 我有: User.rb: has_many :authentications def disapprove self.approved = false end def approve self.approved = true end SOCIALS = {facebook:’Facebook’,google_oauth2:’Google’,linkedin:’Linkedin’} def self.from_omniauth(auth, current_user) authentication = Authentication.where(:provider => auth.provider, :uid => auth.uid.to_s, :token => auth.credentials.token, :secret => auth.credentials.secret).first_or_initialize […]

我正在使用rails cast omniauth,我收到此错误

我使用Mongodb作为rails中的数据库,使用/ auth / linkedin / callback时出错 AuthenticationsController#中的NoMethodError为nil创建未定义的方法[]’:NilClass Rails.root:/ home / prem / Music / heronhrm Application Trace | 框架跟踪| 完整跟踪app / models / user.rb:57:在apply_omniauth’app / controllers / authentications_controller.rb:19:在’create’中 当我删除self.email = omniauth[‘user_info’][’email’] if email.blank? 从usermodel然后出现validation错误 users / sign_up电子邮件不能为空我想为twitter,linkdin和facebook实现。 我的身份validation.rb class Authentication include Mongoid::Document belongs_to :user field :user_id, :type => String field :provider, :type => String field […]

Marionette.js与Rails(设计)认证

好奇人们通常如何处理这个问题。 我的策略是拥有授权的根路由和未经授权的根路由。 授权用户将直接发送到我的marionette.js单页应用程序,未经过授权的用户将被发送到标准的rails登录页面,并可选择登录或注册。 您似乎可以将这些全部组合到单页应用程序中。 您可以根据附加到元素的类来显示/隐藏ui元素,这些元素基于查看它们所需的授权(注册,管理,管理员等)。 您还可以在路由器中添加某种“before_filter”,以检查用户是否可以根据其角色访问此路由。 在这种情况下,我不确定如何处理登录/注册。 您可以设置自己的api路由,这些路由可以通过POST来传递设计工作吗? 思考? 策略? 这里最好的做法是什么?

user.admin在哪里? 在rails-devise-pundit starter app中定义?

我使用RailsApps rails-composer创建了rails- devise-pundit starter应用程序。 我仍然对铁轨上的ruby有点新意,而且更新设计,专家和导轨4。 我正在查看代码以了解它是如何工作的。 控制器和策略类中有很多地方user.admin? 叫做。 但我找不到管理员? 方法。 我希望它在用户模型中,但它不存在。 这是用户类: class User :new_record? def set_default_role self.role ||= :user end end 在users_controller.rb的一部分中使用: def show @user = User.find(params[:id]) unless current_user.admin? unless @user == current_user redirect_to root_path, :alert => “Access denied.” end end end 权威或设计是否会以某种方式创建此方法? 我已经看到它在专家文档中使用,但它只是以它为例。 它并没有说需要创建方法或它处理它。 它是否以某种方式使用角色枚举,其中:admin作为可能的值? 如果有人能解释这是如何工作的,我会很感激。 我打算尽快添加使用rolify gem来处理角色而不是用户类中的角色枚举。 也许我会因为某些原因想要制作完全不同的角色名称。 我想确保我理解如何保持一切正常。 谢谢。

为什么Devise会将sign_up错误重定向到其他页面?

我创建了新的rails项目,只有一个生成的主页控制器来测试它。 我的设计模型是User ,所以注册页面是http://localhost:3000/users/sign_up 。 如果我触发错误,例如,在没有提供密码的情况下提交表单,我会被重定向到http://localhost:3000/users 。 如何在http://localhost:3000/users/sign_up后继续使用http://localhost:3000/users/sign_up ? 我读了这个问题 , 唯一的答案建议在控制器中使用redirect_to :back 。 问题是我没有超越控制器。 如果覆盖是解决的唯一方法,请解释它应该是什么。 这是我的routes.rb Rails.application.routes.draw do root to: “home#index” get ‘home/index’ devise_for :users end 这是Devise::RegistrationsController的源代码。 我应该如何覆盖new或create来实现我的需求?

CanCan ::能在哪里定义current_user方法?

几乎就是我在标题中提到的。 我在我的代码中使用CanCan :: Ability来检查权限和能力。 它期望定义current_user方法。 我猜它来自设计(但不确定),我希望覆盖它。 什么是最好的方法呢?