Sha256: 6b2d56418056a9d758fe0e19c0bb7c4ee75ecacbd99b8c7e6bf7de707c1885e9

Contents?: true

Size: 1.73 KB

Versions: 21

Compression:

Stored size: 1.73 KB

Contents

class Basket < ActiveRecord::Base
  default_scope :order => 'id DESC'
  scope :will_expire, lambda {|date| {:conditions => ['created_at < ?', date]}}
  belongs_to :user, :validate => true
  has_many :accepts

  validates_associated :user, :on => :create
  # 貸出完了後にかごのユーザidは破棄する
  validates_presence_of :user, :on => :create
  validate :check_suspended

  attr_protected :user_id
  attr_accessor :user_number

  def check_suspended
    if self.user
      errors[:base] << I18n.t('basket.this_account_is_suspended') if self.user.locked_at?
    else
      errors[:base] << I18n.t('user.not_found')
    end
  end

  def self.expire
    Basket.will_expire(Time.zone.now.beginning_of_day).destroy_all
    logger.info "#{Time.zone.now} baskets expired!"
  end

  if defined?(EnjuCirculation)
    has_many :checked_items, :dependent => :destroy
    has_many :items, :through => :checked_items
    has_many :checkouts
    has_many :checkins

    def basket_checkout(librarian)
      return nil if self.checked_items.size == 0
      Item.transaction do
        self.checked_items.each do |checked_item|
          checkout = self.user.checkouts.new(:librarian_id => librarian.id, :item_id => checked_item.item.id, :basket_id => self.id, :due_date => checked_item.due_date)
          if checked_item.item.checkout!(self.user)
            checkout.save!
          end
        end
        CheckedItem.destroy_all(:basket_id => self.id)
      end
    end
  end
end

# == Schema Information
#
# Table name: baskets
#
#  id           :integer         not null, primary key
#  user_id      :integer
#  note         :text
#  type         :string(255)
#  lock_version :integer         default(0), not null
#  created_at   :datetime
#  updated_at   :datetime
#

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
enju_circulation-0.0.37 spec/dummy/app/models/basket.rb
enju_circulation-0.0.36 spec/dummy/app/models/basket.rb
enju_circulation-0.0.35 spec/dummy/app/models/basket.rb
enju_circulation-0.0.34 spec/dummy/app/models/basket.rb
enju_circulation-0.0.33 spec/dummy/app/models/basket.rb
enju_circulation-0.0.32 spec/dummy/app/models/basket.rb
enju_circulation-0.0.31 spec/dummy/app/models/basket.rb
enju_circulation-0.0.30 spec/dummy/app/models/basket.rb
enju_circulation-0.0.29 spec/dummy/app/models/basket.rb
enju_circulation-0.0.28 spec/dummy/app/models/basket.rb
enju_circulation-0.0.27 spec/dummy/app/models/basket.rb
enju_circulation-0.0.26 spec/dummy/app/models/basket.rb
enju_circulation-0.0.25 spec/dummy/app/models/basket.rb
enju_circulation-0.0.24 spec/dummy/app/models/basket.rb
enju_circulation-0.0.23 spec/dummy/app/models/basket.rb
enju_circulation-0.0.22 spec/dummy/app/models/basket.rb
enju_circulation-0.0.21 spec/dummy/app/models/basket.rb
enju_circulation-0.0.20 spec/dummy/app/models/basket.rb
enju_circulation-0.0.19 spec/dummy/app/models/basket.rb
enju_circulation-0.0.18 spec/dummy/app/models/basket.rb