2017-07-09 13:41:28 -04:00
# frozen_string_literal: true
2004-11-23 20:04:44 -05:00
class Project < ActiveRecord :: Base
2015-04-28 08:51:51 -04:00
belongs_to :mentor
2016-08-06 12:26:20 -04:00
has_and_belongs_to_many :developers , - > { distinct . order " developers.name desc, developers.id desc " }
2016-08-06 13:37:57 -04:00
has_and_belongs_to_many :readonly_developers , - > { readonly } , class_name : " Developer "
has_and_belongs_to_many :non_unique_developers , - > { order " developers.name desc, developers.id desc " } , class_name : " Developer "
has_and_belongs_to_many :limited_developers , - > { limit 1 } , class_name : " Developer "
has_and_belongs_to_many :developers_named_david , - > { where ( " name = 'David' " ) . distinct } , class_name : " Developer "
has_and_belongs_to_many :developers_named_david_with_hash_conditions , - > { where ( name : " David " ) . distinct } , class_name : " Developer "
has_and_belongs_to_many :salaried_developers , - > { where " salary > 0 " } , class_name : " Developer "
2016-08-16 03:30:11 -04:00
has_and_belongs_to_many :developers_with_callbacks , class_name : " Developer " , before_add : Proc . new { | o , r | o . developers_log << " before_adding #{ r . id || '<new>' } " } ,
after_add : Proc . new { | o , r | o . developers_log << " after_adding #{ r . id || '<new>' } " } ,
before_remove : Proc . new { | o , r | o . developers_log << " before_removing #{ r . id } " } ,
after_remove : Proc . new { | o , r | o . developers_log << " after_removing #{ r . id } " }
2017-02-05 20:00:18 -05:00
has_and_belongs_to_many :well_paid_salary_groups , - > { group ( " developers.salary " ) . having ( " SUM(salary) > 10000 " ) . select ( " SUM(salary) as salary " ) } , class_name : " Developer "
2015-09-26 16:07:24 -04:00
belongs_to :firm
has_one :lead_developer , through : :firm , inverse_of : :contracted_projects
2005-07-04 04:43:57 -04:00
2015-10-29 18:46:57 -04:00
begin
previous_value , ActiveRecord :: Base . belongs_to_required_by_default =
ActiveRecord :: Base . belongs_to_required_by_default , true
has_and_belongs_to_many :developers_required_by_default , class_name : " Developer "
ensure
ActiveRecord :: Base . belongs_to_required_by_default = previous_value
end
2005-07-04 04:43:57 -04:00
attr_accessor :developers_log
2009-09-08 11:22:45 -04:00
after_initialize :set_developers_log
2005-07-04 04:43:57 -04:00
2009-09-08 11:22:45 -04:00
def set_developers_log
2005-07-04 04:43:57 -04:00
@developers_log = [ ]
end
2011-01-02 15:33:18 -05:00
def self . all_as_method
all
end
2012-07-27 12:27:47 -04:00
scope :all_as_scope , - > { all }
2004-12-14 07:32:29 -05:00
end
class SpecialProject < Project
2005-06-13 17:51:43 -04:00
end