天道酬勤,学无止境

devise

Rails 3/Devise confirmation email server settings

问题 我有一个 Rails 3 应用程序,我正在使用 Devise 进行用户身份验证。 如何指定一个应用程序范围的 SMTP 服务器供 Devise 使用? 我在 /config/environments/development.rb 中输入了以下内容(Apache2 设置为 8080) config.action_mailer.default_url_options = { :host => 'mydomain.com:8080' } 关于如何让外发邮件与 Devise 和 Rails 3 一起使用的任何想法? 回答1 回答2

2022-05-17 03:38:15    分类:技术分享    ruby-on-rails   devise   actionmailer

Force user to reset password on first login with Devise

问题 [ETA 最后更新为我当前的解决方案] 我希望能够为高价值用户手动创建帐户,这意味着我们必须为他们生成密码并让他们在首次登录时更改密码。 我在这里找到了一个解决方案,但它似乎可以解决设计问题而不是使用它。 我目前的工作是覆盖 Devise ConfirmationsController 中的 #after_confirmation_path_for 方法,以便它包含以下代码段: if resource.sign_in_count == 1 resource.send(:set_reset_password_token) edit_password_path(resource, reset_password_token: @token) else # etc end 但是当它遵循路径时,它会重定向到密码更改,这似乎是因为 Devise::PasswordsController 中的这一行: # Render the #edit only if coming from a reset password email link append_before_filter :assert_reset_token_passed, only: :edit 所以我可以覆盖那个调用,但我很担心为什么它首先存在以及这是否会导致其他问题 - 即使不是

2022-05-16 00:11:16    分类:技术分享    ruby-on-rails   ruby-on-rails-4   devise

Devise: NoMethod Error & user_signed_in

问题 我正在尝试使用 user_signed_in? 使用 devise 1.1.3 向我的 rails 3 应用程序添加登录区域,我得到一个 NoMethodErrorin Rules#index <% if user_signed_in? -%> <div id="user_login_box" style="float:right"> <%= current_user.email %> | <%= link_to 'My info', edit_user_registration_path %> | <%= link_to 'Sign out', destroy_user_session_path %> </div> <% end -%> 我不确定到底出了什么问题,但显然没有使用设计方法。 我也相当(阅读:真的)Rails 新手,之前没有使用过设计。 回答1 您为其生成设计的模型的名称是什么? 如果您将其称为其他名称而不是User ,您可能需要查看 http://groups.google.com/group/plataformatec-devise/msg/67f1eb5a571b6136 回答2 我有完全相同的问题。 undefined local variable or method 'edit_user_registration_path' 但是,我devise

2022-05-15 17:21:03    分类:技术分享    ruby-on-rails-3   login   devise

Array isn't persisted to database

问题 我正在尝试在我的数据库中存储一个数组(:vehicles)。 该数组由用户通过复选框选择的 3 种可能的车辆组成。 <% @vehicles.each_with_index do |vehicle,index| %> <label> <div > <%= check_box_tag "vehicles[]", index ,class: "available" ,style: "display:none" %> <%= vehicle %> </div> </label> <%end %> ':vehicles' 属性类型是 'text',我使用此代码将其设为数组: serialize :vehicles, Array 如果我发送参数,它会在数组中获取这些值。 "vehicles"=>["0", "1", "2"], "commit"=>"Sign up!", "controller"=>"registrations", "action"=>"create" 问题是当我尝试保存该数组时,它没有存储在数据库中。 在数据库中,代码如下所示: vehicles: [] 控制器代码: def create @student = Student.create(student_params) if @student.save! redirect_to @student else

2022-05-15 07:38:07    分类:技术分享    ruby-on-rails   arrays   postgresql   devise   params

Allow only specific domain names to register in Rails App (Devise gem)

问题 我在这里读到过类似的案例:Validation specific email specific domain devise 3 ruby​​ on rails 4 但是,它只是一个电子邮件域(例如 example.com)。 我想要的是允许我拥有的一些电子邮件域(例如 domain1.com、domain2.com、domain3.com 等)。 如何做到这一点? 回答1 APPROVED_DOMAINS = ["domain_one.com", "domain2.com"] * or you can load this from somewhere else validates :email, presence: true, if: :domain_check def domain_check unless APPROVED_DOMAINS.any? { |word| email.end_with?(word)} errors.add(:email, "is not from a valid domain") end end 回答2 我在其他线程中使用了 Pavan 的代码(只允许特定的电子邮件在 Rails 应用程序(Devise)中注册)并且它正在工作。 为了允许特定的电子邮件,我将这些代码用于我的用户模型: validates :email, format: {

2022-05-13 01:45:04    分类:技术分享    ruby-on-rails   devise

How to prevent Devise from issuing a 302 redirect using AJAX

问题 我正在创建一个 Angular 应用程序,该应用程序使用带有 Devise 的 Rails 后端通过 AJAX 注册和登录用户。 一切正常,用户被添加到数据库中,但我得到一个 302 响应,它触发了 AJAX 错误回调。 我尝试将以下内容添加到registrations_controller.rb,但没有成功: class RegistrationsController < Devise::RegistrationsController respond_to :json private def sign_up_params params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation, :username) end def account_update_params params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation, :current_password, :username) end end 当然还要确保在路由中使用这个控制器: Rails.application.routes.draw do devise_for

2022-05-12 11:21:24    分类:技术分享    ruby-on-rails   ajax   devise

Turn off email sends from Devise in test (Rspec)

问题 设计 3.5.2 导轨 4.2.5 电子邮件发送通过 ActiveJob 成功连接,如此处说明中所定义。 Resque 正在成功处理发送电子邮件的作业(使用 Redis 作为数据存储。) 当 Redis 关闭时,我的 RSpec 功能测试失败并出现Redis::CannotConnectError 。 理想情况下,我希望我的功能测试能够触发设计电子邮件,但不提供任何东西。 我测试了deliveries数组。 在test.rb中,我有: config.action_mailer.delivery_method = :test config.action_mailer.perform_deliveries = false 知道我真的在使用Devise::Mailer ,我在rails_helper明确设置以下内容: Devise::Mailer.delivery_method = :test Devise::Mailer.perform_deliveries = false 当我在模型中点击以下方法时,我可以在运行测试时确认这些设置(通过pry断点)。 模型方法: def send_devise_notification(notification, *args) binding.pry devise_mailer.send(notification, self, *args)

2022-05-12 10:11:15    分类:技术分享    ruby-on-rails   rspec   devise

Devise destroy_user_session_path doesn't work

问题 在我的 ruby​​ on rails 应用程序中,我遇到了用户使用 devise 注销的问题 我有这个导航栏: <% if current_user %> <nav class="top-bar" data-topbar role="navigation"> <ul class="title-area"> <li class="name"> <h1><%= link_to 'Prova CMS', articles_path %></h1> </li> <li class="toggle-topbar menu-icon"><a href="#"></a></li> </ul> <section class="top-bar-section"> <ul class="right"> <li><%=link_to 'Gestisci Articoli', articles_path %></li> <li><%=link_to 'Gestisci Categorie', categories_path %></li> <li class="has-dropdown"> <a href="#"><%= current_user.email %></a> <ul class="dropdown"> <li><%= link_to "Logout", destroy_user

2022-05-12 04:23:04    分类:技术分享    ruby-on-rails   devise

generating meaningful usernames in devise

问题 我试图让我的应用程序自动生成用作 url 的用户名。 通常,它们将是用户的名字和姓氏加在一起,但是当已经存在具有相同名字和姓氏的用户时,它将在名称上附加一个数字,每个数字都会增加。 这是我创建的方法: def full_name first_name + ' ' + last_name end def user_name t_user_name = first_name.downcase.strip.gsub(' ', '').gsub(/[^\w-]/, '') + last_name.downcase.strip.gsub(' ', '').gsub(/[^\w-]/, '') user_name = t_user_name num = 1 while User.find_by_user_name(user_name).count > 0 num += 1 user_name = "#{t_user_name}#{num}" end end 我目前收到错误: undefined method `find_by_user_name' 我认为哪个会自动工作? 我还尝试了这篇文章中显示的示例: 生成唯一的用户名(omniauth + devise) 但我一直收到错误: Mysql2::Error: Unknown column 'users.login' in 'where

2022-05-11 09:45:03    分类:技术分享    ruby-on-rails   ruby   devise

Rails 4 link_to url causes browser to GET when it should DELETE

问题 环顾四周,我发现过去常常在 StackOverflow 上经常询问这个问题的变体,但近年来却没有。 这让我想知道我是否有一些过时的东西,也许是一个 Javascript 库。 我们刚刚开始使用 Ruby 2 开发一个新的 Rails 4 站点,但是我们接受了设计师的前端代码,并且我们几乎没有改动过它。 包括: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 我们有一个注销链接: <%= link_to('LOG OUT', main_app.destroy_user_session_path, :method => :delete) %> 可悲的是,当我们点击它时,浏览器执行的是 GET 而不是 DELETE: Started GET "/users/sign_out" for 127.0.0.1 at 2015-03-19 17:33:09 -0400 Processing by Refinery::PagesController#show as HTML Parameters: {"path"=>"users/sign_out", "locale"=>:en} Refinery::Page Load (0.5ms) SELECT

2022-05-10 13:11:13    分类:技术分享    ruby-on-rails   ruby   devise   refinerycms