class Book < ActiveRecord::Base has_many :authors, :dependent => true has_many :pages, :dependent => true has_many :entry_versions, :order => "entry_versions.created_at DESC" after_create :create_home_page def find_or_build_page(title) pages.find_by_title(title) || pages.build(:title => title) end def find_or_create_page(attributes) pages.find_by_title(attributes[:title]) || pages.create(attributes) end def find_or_create_author(name, ip) authors.find_by_name_and_ip(name, ip) || authors.create(:name => name, :ip => ip) end def to_param url_name end def existing_page_titles connection.select_all("SELECT title FROM pages WHERE book_id = #{self.id.to_i}").map { |row| row['title'] } end protected def create_home_page page = pages.create(:title => "Home Page") version = page.entry_versions.build(:body => "Welcome to i2!") author = version.create_author(:name => "i2", :ip => "127.0.0.1", :book => self) version.save! end end