This doesn''t make any sense to me anymore.  I have an Upload that 
belongs_to a Comment.  Within my Upload model I expect to be able to 
access the associated comment with comment.foo.  I can only seem to do 
this AFTER validation.  I''m assuming before_create takes place between 
validation and updating the database, because when I try to access 
comment.foo within the validate method, I get "You have a nil object 
when you didn''t expect it! The error occured while evaluating 
nil.board".
Now I am using single table inheritance, but I cannot access comment 
from the Upload model either.  Strangely, I can access uploads from the 
Comment model.
This is frustrating the hell out of me :(
class Comment < ActiveRecord::Base
  belongs_to    :board
  has_many      :uploads
end
class Upload < ActiveRecord::Base
  belongs_to    :comment
end
class Image < Upload
  before_create :create_image
  before_create :create_thumbnail
  def create_image
    @image      = Magick::ImageList.new.from_blob(@upload_blob)
    self[:image_width]  = @image.columns
    self[:image_height] = @image.rows
  end
  def create_thumbnail
    @thumbnail  = Magick::ImageList.new.from_blob(@image[0].to_blob)
    if comment.parent_id == nil
      x = comment.board.setting(:parent_thumbnail_at_width)
      y = comment.board.setting(:parent_thumbnail_at_height)
    else
      x = comment.board.setting(:reply_thumbnail_at_width)
      y = comment.board.setting(:reply_thumbnail_at_height)
    end
    if @thumbnail.columns > x or @thumbnail.rows > y
      @thumbnail.change_geometry!("#{x}x#{y}") {|cols, rows, img| 
img.resize!(cols, rows)}
    end
  end
  def validate_on_create
    errors.add_to_base(comment.board.language(:error_toobig)) if 
self[:image_width] > comment.board.setting(:maximum_image_width)
  end
end
-- 
Posted via http://www.ruby-forum.com/.