04. Model validation, association - max-borisov/ihub-bookshelf GitHub Wiki
This is how your models folder should look like:
We are going to update models by specifying associations with other models and validation rules.
book.rb
class Book < ActiveRecord::Base
has_many :reviews, dependent: :destroy
validates :title, :author, :pub_date, :price, :isbn, :description, presence: true
validates :title, :author, length: { maximum: 150 }
validates :isbn, length: { maximum: 12 }, format: { with: /[\d\-]+/ }
validates :amazon_id, length: { maximum: 50 }, format: { with: /[\dA-Z]+/ }
validates :isbn, :amazon_id, uniqueness: { message: 'is not unique' }
validates :price, numericality: true
end
review.rb
class Review < ActiveRecord::Base
belongs_to :user
belongs_to :book
end
user.rb
class User < ActiveRecord::Base
has_many :reviews, dependent: :destroy
has_many :shopping_cart_items, dependent: :destroy
has_many :books, through: :shopping_cart_items
has_many :orders, dependent: :destroy
validates :name, presence: true
end
shopping_cart_item.rb
class ShoppingCartItem < ActiveRecord::Base
belongs_to :user
belongs_to :book
end
order.rb
class Order < ActiveRecord::Base
belongs_to :user
has_many :order_items, dependent: :destroy
validates :user_id, :total_price, presence: true
end
order_item.rb
class OrderItem < ActiveRecord::Base
belongs_to :order
belongs_to :book
end