# 'app/models/book.rb' class Book < ActiveRecord::Base has_many :book_pubhouses, :dependent => :destroy # уничтожать вместе с основным экземпляром has_many :pubhouses, :through => :book_pubhouses # through указывает Rails приложению зависимость двух моделей через третью, теперь мы можем использовать Book.pubhouses напрямую # валидация validates :title, :presence => true validates :title, :uniqueness => true validates :title, :length => { :maximum => 150 } validates :description, :length => { :maximum => 2000 } end # 'app/models/pubhouse.rb' class Pubhouse < ActiveRecord::Base has_many :book_pubhouses, :dependent => :destroy has_many :shops, :through => :book_pubhouses validates :title, :presence => true validates :title, :uniqueness => true validates :title, :length => { :maximum => 150 } validates :address, :length => { :maximum => 2000 } end # 'app/models/book_pubhouse.rb' class BookPubhouse < ActiveRecord::Base belongs_to :book belongs_to :pubhouse validates :book_id, :presence => true validates :pubhouse_id, :presence => true validates :pubhouse_id, :uniqueness => {:scope => :book_id} end