Model validation

I need a little advice on how to best set things up. I have a model where I will have a short form and a longer form in two different places in my application. Obviously, I would like to apply validating rules to both forms. The short form is a subset of the fields in the model. The long form is the full model so it isn't a problem. What are my options?

(1) There is functionality in the models that I don't know about to handle this situation. (2) I should create a second model for the extra fields between the short and long forms, using the same database table. (3) I should create a second model for the extra fields between the short and long forms, using a different database table and a has_one association. (4) Any other suggestions?

Thanks.

It's kind of unclear about what you are trying to do here. Say you have a model like so:

class Customer < ActiveRecord::Base     # contains attributes :fname, :lname, :phone, :city, :state, :zip     validates_presence_of :fname, :lname, :phone, :zip end

This model will validate the presence of the 4 fields (:fname, :lname, :phone, :zip). Would this be comparable to the "longer" version?

If so, would the shorter version be required to ONLY validate a subset of the validates_presence_of list? Perhaps only :fname & :lname?

If this is the case you can just set the default validations to the short list like so:

    validates_presence_of :fname, :lname

In order to get the long validation, you can do this with your model:

class Customer < ActiveRecord::Base     # contains attributes :fname, :lname, :phone, :city, :state, :zip     validates_presence_of :fname, :lname

    @long_validation     attr_accessor :long_validation

    def validate         if @long_validation             errors.add("phone number cannot be blank") if phone.blank?             errors.add("zip code cannot be blank") if zip.blank?         end     end end

Test this using your script/console from the terminal.

HTH, Aldo Sarmiento

Dowker wrote:

Ack!

Forgot to mention, that now you can do this in the controller when loading the ActiveRecord object:

def some_action     @customer = Customer.find_by_id(1) #however you are loading the object     @customer.long_validation = true     # now you can use @customer in your form_for @customer in the view! end

HTH, Aldo Sarmiento

Aldo Sarmiento wrote:

Thanks Aldo. That was exactly what I was trying to communicate. Sorry if I was not clearer.