【问题标题】:Prevent Only Devise confirmation email while creating user through nested attributes通过嵌套属性创建用户时仅防止设计确认电子邮件
【发布时间】:2014-04-22 11:20:30
【问题描述】:

我可以选择创建具有嵌套属性的用户。 我只想跳过确认电子邮件。但是

class ShipperOrder < ActiveRecord::Base
  belongs_to :user
  accepts_nested_attributes_for :user
end

class User < ActiveRecord::Base
  has_many :shipper_orders
end

控制器

class ShipperOrdersController < ApplicationController
  def create
    @shipper_order = ShipperOrder.new(order_params)
    if @shipper_order.save
        flash[:notice] = "Shipper order created"
    else
        flash.now[:alert] = @shipper_order.errors.full_messages.join(", ")
        render :error
    end
  end

  private

  def order_params
    params.require(:shipper_order).permit({user_attributes: [:first_name, :email,
     :last_name,:mobile_phone, :password, :terms_of_service, :password_reset_required 
     ]}, :description)
  end
end

现在我正在创建一个订单,如果用户想将此订单分配给数据库中不存在的用户。然后我在nested_attributes 的帮助下创建该用户。一切正常。我只想禁用此类用户的确认电子邮件。

【问题讨论】:

  • 将您的控制器操作发布到您在数据库中保存用户的位置

标签: ruby-on-rails ruby devise devise-confirmable


【解决方案1】:

你可以像添加attr_accessor

class User < SomeClass

    attr_accessor :skip_user_confirmation

    before_save :skip_confirm


private

  def skip_confirm
    self.skip_confirmation! if self.skip_user_confirmation 
  end

end

一般来说它应该可以工作,但你可能想稍微改变一下 结束

然后在控制器中添加到user_attributes:skip_user_confirmation,这将是true or false

【讨论】:

  • 正是我要找的东西
猜你喜欢
  • 2011-04-20
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2014-01-14
  • 1970-01-01
相关资源
最近更新 更多