Confirmation Checkboxes - any good ideas?

I have a site in development that I need to customer to confirm a few things before they can proceed to the payment page. I intend to present them with the relevant questions and then check that they have answered them e.g. have you read the T's & C's. Are you over 18? Are you resident in the UK etc etc. I do not need to record these necessarily.

Is there a simple way of validating these in the controller and then returning the messages in the same way as Active Record would do so I can use the same form builder as the rest of the site (I do inline errors with ToolTip)?

I have considered just implementing a model called "Confirmation" with a 1-1 relationship with order but I think this is a little overkill and the number of confirmations may change over time and vary. So I would need a to implement a confirmation answer model and a confirmation question model. All seems a bit complex. How about just serializing a hash as a database column with the questions as the key and the values entered?

Has anyone got any good ideas?

Thanks,

O.

My approach on things like this has been to add the attribute to the model with attr_accessor, and then setting up whatever validations I need. E.g.

attr_accessor :terms_of_service

validates_acceptance_of :terms_of_service

Seems to work fine (I've had issues where I've been passing such a model along a multi-action process by storing it in the session, though).

(Still not sure from a business/legal sense why you wouldn't need these to be persistent attributes, however)

dwh

icke wrote:

Denis Haskin wrote:

My approach on things like this has been to add the attribute to the model with attr_accessor, and then setting up whatever validations I need. E.g.

attr_accessor :terms_of_service

validates_acceptance_of :terms_of_service

Seems to work fine (I've had issues where I've been passing such a model along a multi-action process by storing it in the session, though).

(Still not sure from a business/legal sense why you wouldn't need these to be persistent attributes, however)

Agreed on all counts. Booleans are cheap, and you probably want to store something that proves acceptance.

dwh

Best,

You would need to add an attr_accessor and validates_presence_of in your model...

class Model < ActiveRecord::Base

attr_accessor :field_to_validate validates_presence_of :field_to_validate

end

Ha, should have refreshed before I submitted my answer.

Thank you all for your replies.

I agree that Booleans are cheap in terms of storage but I not really want to keep adding database columns through the model as the number of questions vary over time and I do not really want to go through all of the hassle of a child table to hold them. I'm thinking of having one (persistent) attribute on the model which is a serialized hash of the questions and the answers. Any thoughts. Am I just being lazy?

O.

As long as you don’t need to query on those values (“send email to all users who haven’t yet agreed to the latest T&Cs”), the serialization approach will work.

(and with accepts_nested_attributes_for and fields_for, how much work is a child table, really? :wink: )

dwh

icke wrote:

Use validates_acceptance_of

See http://stackoverflow.com/questions/445293/ruby-on-rails-confirmation-page-for-activerecord-object-creation

Euwyn

Denis Haskin wrote:

As long as you don't need to query on those values ("send email to all users who haven't yet agreed to the latest T&Cs"), the serialization approach will work.

It will work, but it's smelly in DB terms.

(and with accepts_nested_attributes_for and fields_for, how much work is a child table, really? :wink: )

And with proper use of migrations, how much work is adding columns, really?

dwh

Best,