通过嵌套属性创建用户时,仅阻止设计确认电子邮件

时间:2014-04-22 11:20:30

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

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

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创建该用户。一切正常。我只想禁用此类用户的确认电子邮件。

1 个答案:

答案 0 :(得分:4)

您可以像

一样添加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