Tag: 设计

如果用户未使用Devise进行身份validation,则重定向到登录页面

我正在使用Devise和Ruby on Rails。 如果未经身份validation的用户尝试访问需要身份validation的页面,建议将其重定向到会话#new页面? 现在我得到一个错误,指出没有路由匹配他们尝试访问的路由(导致生产中出现404错误)。

使用Devise和Omniauth编辑用户

我正在通过Railscast实施Devise和OmniAuth(以及Devise 文档 ) – 目前,我有一个网站,访问者可以使用他们的Facebook帐户或填写表格进行注册。 但是,当通过OmniAuth注册的用户尝试编辑他们的个人资料时,我遇到了麻烦。 当用户提交对其个人资料的更改时,Devise会查找用户的当前密码,但是那些使用facebook登录的用户不知道他们的密码(他们是在用户模型中自动设置的): def self.find_for_facebook_oauth(auth, signed_in_resource=nil) user = User.where(:provider => auth.provider, :uid => auth.uid).first unless user user = User.create(first_name:auth.extra.raw_info.first_name, last_name:auth.extra.raw_info.last_name, provider:auth.provider, uid:auth.uid, email:auth.info.email, password:Devise.friendly_token[0,20] ) end user end 当用户编辑他的信息时,如果他通过OmniAuth设置了他的帐户,则该应用程序不应要求密码确认。 教程建议方便的password_required? 方法将帮助我实现这一结果。 具体来说,将此方法添加到用户模型意味着它应该仅在用户未通过OmniAuth注册时返回true(在这种情况下提供者属性将为nil): def password_required? super && provider.blank? end 因此,一段代码如: resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do […]

用设计白名单

我正在使用设计来管理我的rails应用程序中的用户身份validation。 设计真的很棒。 但是我对我的应用程序有特殊要求:用户必须先列入白名单才能注册为用户。 因此,有一个管理员可以创建允许的电子邮件列表。 用户使用电子邮件注册,如果电子邮件位于白名单表中,则他将被注册。 但是,如果邮件不在白名单中,则应使用“您尚未被邀请”之类的消息中止注册。 你知道如何用设计解决这个问题吗? 提前致谢。

在设计2.0上跳过omniauth-twitter的电子邮件validation

我正在使用devise 2.0和gem omn​​iauth-twitter 问题是twitter没有响应发送电子邮件,所以我的应用程序的模型用户validation有一封电子邮件,我在回调中收到以下错误: Email can’t be blank 我在user.rb模型中有这个: #config omniauth twitter def self.find_for_twitter_oauth(access_token, signed_in_resource = nil) data = access_token.extra.raw_info if user = User.where(:username => data.screen_name).first user else User.create!(:username => data.screen_name, :password => Devise.friendly_token) end end 我在omn​​iauth_callbacks_controller.rb中有这个 def twitter @user = User.find_for_twitter_oauth(request.env[“omniauth.auth”], current_user) if @user.persisted? flash[:notice] = I18n.t “devise.omniauth_callbacks.success”, :kind => “Twitter” sign_in_and_redirect @user, :event […]

Rails 4.0 with Devise。 嵌套属性Unpermited参数

我正在使用Devise和Rails 4开发一个Web应用程序。我有一个用户模型,我已经扩展了2个额外的表单字段,这样当用户注册时,他也可以提交他的名字/姓氏。 (基于http://blog.12spokes.com/web-design-development/adding-custom-fields-to-your-devise-user-model-in-rails-4/ )。 我现在想要添加一个Institution模型。 此模型has_many :用户和用户belongs_to :institution。 我希望能够在注册用户的同一表格上注册该机构的名称 。 我知道我需要在我的Institution模型中使用nested_attribute,因为这是父类,我将稍微展示一下。 当我尝试注册用户时,我进入控制台: Unpermited参数:机构 。 我的提示是我无法根据我的子类(User)更新我的父类(Institution)。 可能有解决方案吗? 或者有没有人经历类似的事情? class Institutions < ActiveRecord::Base has_many :users, accepts_nested_attributes_for :users end class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable belongs_to :institution end registrations / new.html.erb这里我有嵌套表格 resource_name, :url => registration_path(resource_name)) do |f| %> . . 基于我之前链接的教程,我创建了一个新的User :: ParameterSanitizer […]

如何跳过Devise的SessionsController的before_filter?

我的ApplicationController有一个before_filter ; 也就是说,对于我项目中的每个控制器。 我怎样才能为Devise的SessionsController创建动作skip_before_filter ?

设计如何将当前用户关联到post?

如何将我登录的当前用户与我在创建时的post相关联? 我的post模型: before_create :owner belongs_to :user def owner self.user_id = current_user.id end 但是因为我不能在模型中使用方法current_user,所以这种方法有效。 这是我的控制器: class PostsController @posts } end end # GET /posts/1 # GET /posts/1.xml def show @post = Post.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @post } end end # GET /posts/new # GET /posts/new.xml def new @post […]

使用Devise添加额外的注册字段

我正在尝试为注册#new添加一些额外的字段。 由于我只需要额外的数据而且不需要不同的function,我不明白为什么我需要覆盖控制器等。所以我做的是修改注册#new如下: 要通过清理程序启用这些额外的字段,我更新了ApplicationController,如下所示: 由于某种原因,它不起作用,额外的字段作为空值进入数据库。 我使用的是Ruby 2和Rails 4 rc1,以及Devise 3.0.0.rc.

rails 3 + devise:如何修改邮件方法以确认电子邮件添加用户的第二个电子邮件地址

背景:在我们的应用程序中,我们经常有销售代表使用销售人员的计算机为我们的客户进行设置(通常客户在我们设置它们时无法访问他们的电子邮件)。 因此,我们正在考虑在销售代表的电子邮件地址的设计注册表中添加一个字段,并将确认链接也转到该电子邮件地址。 问题:有没有办法告诉设计bcc(或cc)初始确认电子邮件( 只有初始确认电子邮件 )到新用户注册表上也提供的(可选)“backup_email”电子邮件地址? 或者,有没有办法’禁用’确认电子邮件过程,但只有当某个代码输入注册字段时? 我知道如何在设计注册表单中添加另一个字段,但是我没有看到如何/在哪里修改设计邮件代码,所以当确认电子邮件发送到“电子邮件”地址时它也会转到“backup_email”地址(如果有的话,有时它是空白的)。 感谢Johnny Grass! 我做了rails generate mailer CustomerUserMailer并添加了 #config/initializers/devise.rb config.mailer = “CustomUserMailer” 我的自定义邮件看起来像: # app/mailers/customer_user_mailer.rb class CustomUserMailer translate(devise_mapping, action), :from => mailer_sender(devise_mapping), :to => resource.email, :cc => resource.backup_user_email(action), :template_path => template_paths } end end 然后我将3个邮件模板FROM views/devise/mailer到views/customer_user_mailer (否则电子邮件为空) 然后我在我的User模型中添加了一个名为backup_user_email()的方法,该方法根据用户记录和操作中的数据返回“备份”电子邮件地址(如果有)。 唯一的“技巧”是,当测试action它不是action == “confirmation_instructions”它是action == :confirmation_instructions 。

如何使用Devise根据角色重定向用户的主(根)路径?

我正在开发一个项目管理应用程序,在应用程序中,我有project_managers和客户端 。 我正在使用Devise和CanCan进行身份validation/授权。 在登录后的什么时候我应该将用户重定向到他们自己的特定控制器/布局/视图? 有没有办法检查routes.rb current_user.role并根据它们是项目经理还是客户端设置root(或重定向)? 这是我在Devise某处可以做出的改变吗? 在此先感谢您的帮助! – 标记