Skip to content

Instantly share code, notes, and snippets.

module SelectiveAttributeValidatable
def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
alias_method_chain :update_attributes, :check
end
end
validates_presence_of :first_name, :if => :should_require_first_name?
validates_uniqueness_of :url_slug, :if => :should_require_url_slug?
class Product < ActiveRecord::Base
has_many :images, :class_name => "ProductImage"
end
class ProductImage < ActiveRecord::Base
belongs_to :product
ProductImagesDefinitions = {
'main' => {:styles => {:large => "1200x600!", :medium => "600x300!"},
'header' => {:styles => {:large => "400x600!", :medium => "200x300!"}
}
# Create product images.
@product.product_images.create(:label => 'main', :image => # Attachment object)
@product.product_images.create(:label => 'header', :image => # Attachment object)
# Access product images.
@product.available_images('main')
@product.available_images('header')
# Adds behavior for getting, setting, and validating
# images for any given model. Relies on RAILS_ROOT/config/image_definitions.rb
module ImageHandling
def self.included(base)
base.class_eval do
# Defines accessor names: if the class is Book,
# names will be #book_images and #book_images=
image_accessor_name = self.to_s.underscore + "_images"