Validations
Premium Content - Free Preview
Your console store app can be used to perform all sorts of actions, including ones that shouldn't be valid. For example, let's say we create a product in the rails console without any information in it:
prod = Product.create
This outputs:
(0.2ms) begin transaction
SQL (0.7ms) INSERT INTO "products"...
(1.4ms) commit transaction
=> #<Product id: 9, name: nil, description: nil, price: nil, ... >
This just saved a product to the database with no values filled in. This is not only useless, it can cause bugs when other code expects certain values to exist in a product, such as a product's name. Go ahead and destroy the product just created:
prod.destroy
To prevent an invalid product from being created, we should add code to validate our data before it is saved. Rails provides a validates
method for this purpose. Add the validates
line to your Product model:
class Product < ActiveRecord::Base
validates :name, presence: true
belongs_to :category
end
The validates
method takes in parameters for the column and the property you're ensuring, such as the name and presence.
Now that we've ensured every product will have a name, let's make sure every product has a price. Enter the code to do that below and in your Product class.
Terminal Time
Reload your console and try to create an empty product like before.
End of Free Content Preview. Please Sign in or Sign up to buy premium content.