Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # == Schema Information
- # Schema version: 20110504074503
- #
- # Table name: orders
- #
- # id :integer not null, primary key
- # user_id :integer not null
- # internal_name :string(255) not null
- # external_name :string(255)
- # state :string(255)
- # created_at :datetime
- # updated_at :datetime
- #
- class Order < ActiveRecord::Base
- has_paper_trail
- belongs_to :user
- has_many :multipage_pdfs, :as => :assetable, :dependent => :destroy
- has_many :pages, :dependent => :destroy
- validates_presence_of :user, :user_id, :internal_name, :state
- validates_numericality_of :user_id
- state_machine :initial => :waiting do
- event :start_processing do
- transition any => :processing
- end
- event :processed do
- transition :processing => :processed
- end
- end
- end
- # == Schema Information
- # Schema version: 20110509124929
- #
- # Table name: assets
- #
- # id :integer not null, primary key
- # assetable_id :integer not null
- # assetable_type :string(255) not null
- # type :string(255) not null
- # state :string(255) not null
- # document_file_name :string(255)
- # document_content_type :string(255)
- # document_file_size :integer
- # document_updated_at :datetime
- # created_at :datetime
- # updated_at :datetime
- #
- class Asset < ActiveRecord::Base
- require 'tmpdir'
- belongs_to :assetable, :polymorphic => true
- end
- class MultipagePdf < Asset
- after_save :split
- has_attached_file :document
- state_machine :initial => :waiting do
- event :splitted do
- transition :waiting => :splitted
- end
- event :failed do
- transition :waiting => :failed
- end
- end
- protected
- def split
- # ...
- end
- end
- irb(main):001:0> o = Order.new(:internal_name => "test", :user_id => 1)
- => #<Order id: nil, user_id: 1, internal_name: "test", external_name: nil, state: "waiting", created_at: nil, updated_at: nil>
- irb(main):003:0> p = o.multipage_pdfs.build
- => #<MultipagePdf id: 3, assetable_id: 4, assetable_type: "Order", type: "MultipagePdf", state: "failed", document_file_name: nil, document_content_ty
- pe: nil, document_file_size: nil, document_updated_at: nil, created_at: "2011-05-10 07:21:19", updated_at: "2011-05-10 07:21:19">
- irb(main):004:0> p.new_record?
- => false
Add Comment
Please, Sign In to add comment