missing model
git-svn-id: http://svn.barleysodas.com/barleysodas/trunk@27 0f7b21a7-9e3a-4941-bbeb-ce5c7c368fa7master
parent
07b86bf631
commit
c2c17af726
|
@ -0,0 +1,38 @@
|
|||
##
|
||||
# This model will represent a beverage produced by a Brewery.
|
||||
#
|
||||
class Beer < ActiveRecord::Base
|
||||
belongs_to :brewery
|
||||
has_one :page, :foreign_key => 'owner_id', :dependent => :destroy,
|
||||
:conditions => "pages.owner_type = 'Beer'"
|
||||
before_save :ensure_page_valid
|
||||
after_save :save_page
|
||||
|
||||
protected
|
||||
|
||||
##
|
||||
# This model always has a Page associated. Save it before this model to make
|
||||
# sure that everything is kosher with the name and whatnot.
|
||||
#
|
||||
def save_page
|
||||
page.save
|
||||
end
|
||||
|
||||
##
|
||||
# This will let the Page model keep track of names being unique and all.
|
||||
# Might be nil, so let the after_save hook create it.
|
||||
#
|
||||
def ensure_page_valid
|
||||
if page.nil?
|
||||
self.errors.add(:page, "is missing")
|
||||
else
|
||||
page.owner = self
|
||||
page.title = self.title
|
||||
page.errors.each do |key, val|
|
||||
self.errors.add(key, val)
|
||||
end if !page.valid?
|
||||
end
|
||||
return false if self.errors.size > 0
|
||||
true
|
||||
end
|
||||
end
|
Reference in New Issue