####by fq class Bid < ActiveRecord::Base #attr_accessible :author_id, :budget, :deadline, :name, :description belongs_to :author, :class_name => 'User', :foreign_key => :author_id has_many :biding_projects, :dependent => :destroy has_many :projects, :through => :biding_projects has_many :journals_for_messages, :as => :jour, :dependent => :destroy NAME_LENGTH_LIMIT = 60 DESCRIPTION_LENGTH_LIMIT = 250 validates_length_of :name, :maximum => NAME_LENGTH_LIMIT validates_length_of :description, :maximum => DESCRIPTION_LENGTH_LIMIT validates_presence_of :author_id, :name, :deadline validates_presence_of :deadline, :message => 'test' # validates_format_of :deadline, :with => validate :validate_user scope :visible, lambda {|*args| nil } scope :like, lambda {|arg| if arg.blank? where(nil) else pattern = "%#{arg.to_s.strip.downcase}%" where("LOWER(id) LIKE :p OR LOWER(name) LIKE :p OR LOWER(description) LIKE :p", :p => pattern) end } acts_as_watchable acts_as_taggable acts_as_event :title => Proc.new {|o| "#{l(:label_requirement)} ##{o.id}: #{o.name}" }, :description => :description, :author => :author, :url => Proc.new {|o| {:controller => 'bids', :action => 'show', :id => o.id}} acts_as_activity_provider :find_options => {:include => [:author]}, :author_key => :author_id def add_jour(user, notes, reference_user_id = 0) self.journals_for_messages << JournalsForMessage.new(:user_id => user.id, :notes => notes, :reply_id => reference_user_id) end def self.creat_bids(budget, deadline, name, description=nil) self.create(:author_id => User.current.id, :budget => budget, :deadline => deadline, :name => name, :description => description, :commit => 0) end def update_bids(budget, deadline, name, description=nil) if(User.current.id == self.author_id) self.name = name self.budget = budget self.deadline = deadline self.description = description self.save end end def delete_bids unless self.nil? if User.current.id == self.author_id self.destroy end end end def set_commit(commit) self.update_attribute(:commit, commit) end private def validate_user errors.add :author_id, :invalid if author.nil? || !author.active? end end