####by fq =begin bid一类多用,根据reward_type字段分类 reward_type == 1 企业众包需求 reward_type == 2 创新竞赛 reward_type == 3 课程中布置的作业 homework_type作业类型 homework_type == 1 文件提交 homework_type == 2 Project提交 =end class Bid < ActiveRecord::Base # Enterprise = 1 # Contest = 2 # Homework = 3 # HomeworkFile = 1 # HomeworkProject = 2 # attr_accessible :author_id, :budget, :deadline, :name, :description, :homework_type, :password # include Redmine::SafeAttributes # include ApplicationHelper # has_many_kindeditor_assets :assets, :dependent => :destroy # belongs_to :author, :class_name => 'User', :foreign_key => :author_id # belongs_to :course # has_many :biding_projects, :dependent => :destroy # has_many :projects, :through => :biding_projects # has_many :courses_member, :class_name => 'User', :through => :courses # has_many :journals_for_messages, :as => :jour, :dependent => :destroy # has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy # has_many :homework_for_courses, :dependent => :destroy # has_many :courses, :through => :homework_for_courses, :source => :course # has_many :homeworks, :class_name => 'HomeworkAttach', :dependent => :destroy # has_many :homework_evaluations, :through => :homeworks # has_many :join_in_contests, :dependent => :destroy # has_many :praise_tread, as: :praise_tread_object, dependent: :destroy # # has_many :fork_homework, :class_name => 'Bid', :conditions => "#{Bid.table_name}.parent_id = #{id}" # acts_as_attachable # # NAME_LENGTH_LIMIT = 60 # DESCRIPTION_LENGTH_LIMIT = 3000 # validates :name, length: {maximum: NAME_LENGTH_LIMIT}, presence: true # validates :description, length: {maximum: DESCRIPTION_LENGTH_LIMIT} # validates :author_id, presence: true # validates :deadline, presence: true, format: {:with => /^[\d]{4}[-][\d]{1,2}[-][\d]{1,2}$/} # validates :name, length: {maximum: NAME_LENGTH_LIMIT} # validates :budget, format: { with: ->(p) { if p.reward_type == 1 then /^(\d+)$|^(\d+).([0-9]{2})|^(\d+).([0-9]{1})$/ # elsif p.reward_type == 3 then /^(\d+)$|^(\d+).([0-9]{1})$/ end } } # # validate :validate_user # validate :validate_reward_type # after_create :act_as_activity # after_destroy :delete_kindeditor_assets # 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 # } # # scope :course_visible, lambda {|*args| # includes(:courses).where(Course.allowed_to_condition(args.shift || User.current, :view_homeworks, *args)) # } # # acts_as_watchable # acts_as_taggable # # acts_as_event :title => Proc.new {|o| "#{l(:label_course_homework)} ##{o.id}: #{o.name}" }, # :description => :description, # :author => :author, # :url => Proc.new {|o| {:controller => 'bids', :action => 'show', :id => o.id}} # # acts_as_activity_provider :type => 'homeworks', # :author_key => :author_id # # acts_as_activity_provider :find_options => {:include => [:projects, :author]}, # :author_key => :author_id # # safe_attributes 'name', # 'description', # 'budget', # 'deadline', # 'homework_type', # 'reward_type', # 'password' # # # # safe_attributes 'name', # # 'description', # # 'deadline' # def add_jour(user, notes, reference_user_id = 0, options = {}) # if options.count == 0 # jfm = JournalsForMessage.new(:user_id => user.id, :notes => notes, :reply_id => reference_user_id) # self.journals_for_messages << jfm # jfm # else # jfm = self.journals_for_messages.build(options) # jfm.save # jfm # end # end # # def self.creat_bids(budget, deadline, name, description=nil, reward_type) # self.create(:author_id => User.current.id, :budget => budget, # :deadline => deadline, :name => name, :description => description, :commit => 0, :reward_type => reward_type) # # self.acts << Activity.new(:user_id => self.author_id) # 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 # # def validate_reward_type # errors.add :reward_type, :invalid if self.reward_type == 0 # end # # def act_as_activity # self.acts << Activity.new(:user_id => self.author_id) # end # # # used to validate weather the user is the creater of the bid # # added by william # def validate_bid_manager(user_id) # unless user_id.nil? # if self.author_id == user_id # return true # else # return false # end # end # end # # # Time 2015-04-01 14:19:06 # # Author lizanle # # Description 删除对应课程通知的图片资源 # def delete_kindeditor_assets # delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::BID # end end