Запретить только разработку электронного письма с подтверждением при создании пользователя с помощью вложенных атрибутов

При желании я создаю пользователя с вложенными атрибутами. Я просто хочу пропустить подтверждение по электронной почте. Но

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 ответ

Решение

Вы можете добавить 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

Другие вопросы по тегам