What is wrong with validates_presence_of :my_association?

Category.has_many :products

Let’s say a product must belong to a category. I know it is recommended
to do the following:

class Product
validates_presence_of :category_id
end

But, as we all know, this is a pain for new records, meaning what if the
associated category is a new record?

I’ve been meaning to ask this, but what’s wrong with doing the
following:

class Product
validates_presence_of :category
end

I never understood why that was so wrong. So I wanted to ask and see if
I am missing something. What do you think? Thanks for your help!

That will check the value for a field called category, not an
association.

Ryan B.
Freelancer

But, as we all know, this is a pain for new records, meaning what if the
associated category is a new record?

I’ve been meaning to ask this, but what’s wrong with doing the
following:

class Product
validates_presence_of :category
end

In this case you may need validates_associated or write your own
validation by def validate.

Ben J. wrote:

associated category is a new record?

I’ve been meaning to ask this, but what’s wrong with doing the
following:

class Product
validates_presence_of :category
end

I never understood why that was so wrong. So I wanted to ask and see if
I am missing something. What do you think? Thanks for your help!

It isn’t wrong, it’s the right way to do it. You just have to
assign a category object when building a new Product.


Rails Wheels - Find Plugins, List & Sell Plugins -
http://railswheels.com