class Bike < ActiveRecord::Base acts_as_loggable attr_accessible :shop_id, :serial_number, :bike_brand_id, :model, :color, :bike_style_id, :seat_tube_height, :top_tube_length, :bike_wheel_size_id, :value, :bike_condition_id, :bike_purpose_id, :photo has_many :transactions has_one :owner, :class_name => 'User' has_one :task_list, :as => :item, :dependent => :destroy belongs_to :bike_brand belongs_to :bike_style belongs_to :bike_condition belongs_to :bike_purpose belongs_to :bike_wheel_size has_attached_file :photo, :styles => {:thumb => '100x100>'} validates :shop_id, :presence => true, :uniqueness => true, :numericality => { :only_integer => true } validates :serial_number, :length => { :minimum => 3 } validates :model, :length => { :maximum => 50 } validates :bike_brand_id, :presence => true, :numericality => { greater_than: 0, message: "is not a valid brand" } #validates :color, :presence => true validates :bike_style_id, :presence => true, :numericality => { greater_than: 0, message: "is not a valid style" } validates :seat_tube_height, :presence => true, :numericality => true validates :bike_wheel_size_id, :presence => true, :numericality => { greater_than: 0, message: "is not a valid wheel size" } validates :bike_condition_id, :presence => true, :numericality => { greater_than: 0, message: "is not a valid condition" } validates :bike_purpose_id, :presence => true, :numericality => { greater_than: 0, message: "is not a valid purpose" } validates_attachment :photo, :content_type => {:content_type => %w{ image/jpeg image/gif image/png }}, :file_name => {:matches => [/png\Z/, /jpe?g\Z/, /gif\Z/]} self.per_page = 15 after_create :create_task_list def brand self.bike_brand end def style self.bike_style end def condition self.bike_condition end def purpose self.bike_purpose end def wheel_size self.bike_wheel_size end def to_s "#{brand} - #{model} - #{style}" end def create_task_list TaskList.create( item_id: self.id, item_type: self.class.to_s, name: "Safety Checklist") end end