Я использую ruby 1.9.2-p180, рельсы 3.0.7. Я использовал validates_acceptance_of, так как пользователь должен согласиться с нашими условиями. У нас нет для этого столбца, но я понимаю, что «Если столбец базы данных не существует, атрибут term_of_service является полностью виртуальным». http://ar.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M000082
Во всяком случае, я дважды проверил это, проверяя приложение вручную, и я вижу из журналов, что запись все еще вставляется в БД, что странно, потому что при отправке формы я перенаправлен обратно в форму с ошибкой : «Должен согласиться с условиями» (что заставило меня думать, что это работало раньше)
Я что-то здесь не так делаю?
_form.haml:
%label.checkbox-label{:for => "operator_terms_and_conditions"}
= f.check_box :terms_and_conditions
I agree to
= link_to "Terms and Conditions", operator_terms_path, :target => "_blank"
operators_controller:
def create
user_params = params[:operator][:user]
user_params.merge!(:login => user_params[:email])
@password = params[:operator][:user][:password]
Operator.transaction do # don't save User if operator is invalid
@operator = Operator.create(params[:operator])
end
respond_to do |format|
unless @operator.new_record?
UserMailer.operator_confirmation_email(@operator, @password).deliver
UserMailer.operator_registration_admin_notification_email(@operator).deliver
UserSession.create(@operator.user)
format.html {redirect_to new_operator_aircraft_path}
else
format.html { render :action => "new" }
end
end
end
и в модели:
validates_acceptance_of :terms_and_conditions