Skip to content

Instantly share code, notes, and snippets.

@dchapman1988
Forked from rthbound/scopes.rb
Created January 6, 2012 21:40
Show Gist options
  • Save dchapman1988/1572521 to your computer and use it in GitHub Desktop.
Save dchapman1988/1572521 to your computer and use it in GitHub Desktop.
named_scope :between, lambda {|start_date, end_date| {:conditions => ["residential_insurance_applications.created_at BETWEEN ? AND ?", start_date.beginning_of_day, end_date.end_of_day]} }
named_scope :before, lambda {|end_date| {:conditions => ["residential_insurance_applications.created_at < ?", end_date.end_of_day]} }
named_scope :after, lambda {|start_date| {:conditions => ["residential_insurance_applications.created_at > ?", start_date.beginning_of_day]} }
named_scope :stale, lambda { {:conditions => ["completed_at IS NULL AND updated_at < ?", DEFAULT_STALE_THRESHOLD.ago]} }
named_scope :completed, :conditions => ["completed_at IS NOT NULL"]
named_scope :uncompleted, :conditions => ["completed_at IS NULL"]
named_scope :for_agency, lambda {|agency| {:include => [{:user => [:agency]}], :conditions => ["agencies.id = ?", agency.id] } }
named_scope :for_producer, lambda {|producer| {:conditions => ["residential_insurance_applications.producer_id = ?", producer.id] } }
named_scope :for_producer_by_name, lambda {|producer_name| {:include => [:producer], :conditions => ["producers.name LIKE ?", "%#{producer_name}%"] } }
named_scope :for_user, lambda {|user| {:conditions => ["residential_insurance_applications.user_id = ?", user.id] } }
named_scope :with_payment, lambda{ { :include => [:payment] , :conditions => ["payments.payable_id = residential_insurance_applications.id AND payments.payable_type = 'ResidentialInsuranceApplication'"]} }
named_scope :without_payment, lambda{ { :include => [:payment] , :conditions => ["NOT EXISTS(SELECT payments.payable_id, payments.payable_type FROM payments WHERE payments.payable_id = residential_insurance_applications.id AND payments.payable_type = 'ResidentialInsuranceApplication')"]} }
named_scope :for_user_login, lambda{|login| { :include => [:user] , :conditions => ["users.login LIKE ?", "%#{login}%"]} }
named_scope :for_applicant_last_name, lambda{|last_name| { :conditions => ["applicant_last_name LIKE ?", "%#{last_name}%"]} }
named_scope :for_binder, lambda { {:include => [:aiua_quote], :conditions => ["aiua_quotes.is_binder = ?", true] } }
named_scope :for_waiver, lambda { {:include => [:aiua_quote], :conditions => ["aiua_quotes.is_waiver = ?", true] } }
named_scope :for_normal, lambda { {:include => [:aiua_quote], :conditions => ["aiua_quotes.is_binder = ? AND aiua_quotes.is_waiver = ?", false, false] } }
named_scope :cart_products_not_empty,
:joins => :cart_products,
:group => 'cart_products.cart_id',
:having => "count(cart_products.cart_id) >= 1"
named_scope :cart_components_not_empty,
:joins => :cart_components,
:group => 'cart_components.cart_id',
:having => "count(cart_components.cart_id) >= 1"
named_scope :not_empty, :conditions => lambda { {:include => [:cart_components, :cart_products], ["cart_components != ? OR cart_products != ?", [], []] }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment