标签: devise

Rails 5 - Devise - 用户 has_one 关联 - 注册表单中不显示嵌套表单字段

当我搜索时,这是一个常见问题,但我发现没有一个答案适合我的情况。我已经使用设计建立了一个用户模型,它有两个相关的模型,它有一个详细联系信息和许多地址。嵌套表单适用于地址,但未显示我的联系方式详细信息字段。

我的用户模型如下:

  validates_presence_of :contact_detail, :addresses
  # Include default devise modules. Others available are:
  # :lockable, :timeoutable, :trackable and :omniauthable
  devise :invitable, :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable, :confirmable

  has_one :contact_detail, dependent: :destroy
  has_many :addresses, dependent: :destroy

  accepts_nested_attributes_for :addresses, 
                                allow_destroy: true

  accepts_nested_attributes_for :contact_detail,
                                allow_destroy: true
Run Code Online (Sandbox Code Playgroud)

联系方式型号只有belongs_to :user

我在我的应用程序控制器上进行了 devise gem 中提到的更改:

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [addresses_attributes: [:street_name, :street_number, :city, :country, :postal_code, :name],
                                                      contact_detail_attributes: [:first_name, :last_name, :description, :telephone, :mobile ]])
  end
end
Run Code Online (Sandbox Code Playgroud)

我的 …

ruby ruby-on-rails nested-forms devise ruby-on-rails-5

0
推荐指数
1
解决办法
239
查看次数

如何保存设备current_user

尝试更新 current_user
\n但在递减计数器属性并收到验证错误后无法保存,最小密码长度为 6 个字符 \xe2\x80\x93

\n\n
current_user.crawl_counter -= 1\ncurrent_user.save!\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:

\n\n
class User < ActiveRecord::Base\n  devise :database_authenticatable, :registerable,\n         :recoverable, :rememberable, :trackable, :validatable\n\n  attr_accessible :email, :password, :password_confirmation, :remember_me, :crawl_counter\n  PASSWORD_REGEX = /^[a-zA-Z\\d]*$/\n  validates :password, format: { with: PASSWORD_REGEX, :message => I18n.t('errors.messages.password_invalid') }\nend\n
Run Code Online (Sandbox Code Playgroud)\n

ruby-on-rails devise

-1
推荐指数
1
解决办法
1783
查看次数

Ruby on Rails语法错误意外的keyword_else和keyword_end

我正在尝试为我的注册,注销和登录定义路径,但我得到一些大致简单的错误,这给了我很多麻烦:(

我也在使用设计宝石.

错误:意外的keyword_else,期待'}'

错误:意外的keyword_end,期待'}'

<%else%><%end%>是问题

我在唱出来之后收到了这些错误并登录链接

<nav class="navbar navbar-default">

<div class="container">

  <div class="navbar-header">
    <%= link_to "Book Review", root_path, class: "navbar-brand"%>
    </div>
  <ul class="nav navbar-nav">
    <li><%= link_to "Sign up", new_user_registration_path%></li>
    <%= if user_signed_in? %>
        <li><%= link_to "Sign out", destroy_user_session_path, method: :delete %></li>
    <% else %>
        <li><%= link_to "Log in", new_user_session_path %></li>
    <% end %>

  </ul>

</div>
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails devise

-1
推荐指数
1
解决办法
135
查看次数

Gitlab 电子邮件确认重定向

默认情况下,Gitlab 会在电子邮件确认后将用户重定向到主页。我想改为异地重定向。

我不认为有一个配置选项,所以我问如何破解它。

我发现confirmations_controller.rb

# frozen_string_literal: true

class ConfirmationsController < Devise::ConfirmationsController
  include AcceptsPendingInvitations

  def almost_there
    flash[:notice] = nil
    render layout: "devise_empty"
  end

  protected

  def after_resending_confirmation_instructions_path_for(resource)
    users_almost_there_path
  end

  def after_confirmation_path_for(resource_name, resource)
    accept_pending_invitations

    # incoming resource can either be a :user or an :email
    if signed_in?(:user)
      after_sign_in(resource)
    else
      Gitlab::AppLogger.info("Email Confirmed: username=#{resource.username} email=#{resource.email} ip=#{request.remote_ip}")
      flash[:notice] = flash[:notice] + " Please sign in."
      new_session_path(:user, anchor: 'login-pane')
    end
  end

  def after_sign_in(resource)
    after_sign_in_path_for(resource)
  end
end
Run Code Online (Sandbox Code Playgroud)

如何让它将我重定向到 google.com?

ruby redirect devise gitlab

-2
推荐指数
1
解决办法
170
查看次数

用户名不能为空

所以我输入了用户名,电子邮件和密码(+密码确认),一旦我点击提交,它说:"用户名不能为空",我清楚地输入了用户名.

这是我的user.rb

class User < ActiveRecord::Base
  validates :user_name, presence: true, length: { minimum: 4, maximum: 16

  }
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end
Run Code Online (Sandbox Code Playgroud)


这是我的registrations_controller:

class RegistrationsController < Devise::RegistrationsController

  private

  def sign_up_params
    params.require(:user).permit(:email, :user_name, :password, :password_confirmation)
  end

  def account_update_params
    params.require(:user).permit(:email, :user_name, :password, :password_confirmation, :current_password)
  end
end
Run Code Online (Sandbox Code Playgroud)


以下是我的new.html.erb

<h2>Sign up</h2>

<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise cloud9-ide

-5
推荐指数
1
解决办法
539
查看次数