我可以选择使用嵌套属性创建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创建该用户。一切正常。我只想禁用此类用户的确认电子邮件。
答案 0 :(得分:4)
您可以像
一样添加attr_accessorclass 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