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/.