File: car.rb

package info (click to toggle)
rails 2%3A7.2.2.2%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 43,348 kB
  • sloc: ruby: 349,797; javascript: 30,703; yacc: 46; sql: 43; sh: 29; makefile: 27
file content (37 lines) | stat: -rw-r--r-- 1,290 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# frozen_string_literal: true

class Car < ActiveRecord::Base
  belongs_to :person, counter_cache: true
  has_many :bulbs
  has_many :all_bulbs, -> { unscope(where: :name) }, class_name: "Bulb"
  has_many :all_bulbs2, -> { unscope(:where) }, class_name: "Bulb"
  has_many :other_bulbs, -> { unscope(where: :name).where(name: "other") }, class_name: "Bulb"
  has_many :old_bulbs, -> { rewhere(name: "old") }, class_name: "Bulb"
  has_many :funky_bulbs, class_name: "FunkyBulb", dependent: :destroy
  has_many :failed_bulbs, class_name: "FailedBulb", dependent: :destroy
  has_many :foo_bulbs, -> { where(name: "foo") }, class_name: "Bulb"
  has_many :awesome_bulbs, -> { awesome }, class_name: "Bulb"

  has_one :bulb

  has_many :tyres, counter_cache: :custom_tyres_count
  has_many :engines, dependent: :destroy, inverse_of: :my_car
  has_many :wheels, as: :wheelable, dependent: :destroy

  has_many :price_estimates, as: :estimate_of

  scope :incl_tyres, -> { includes(:tyres) }
  scope :incl_engines, -> { includes(:engines) }

  scope :order_using_new_style,  -> { order("name asc") }

  attribute :wheels_owned_at, :datetime, default: -> { Time.now }
end

class CoolCar < Car
  default_scope { order("name desc") }
end

class FastCar < Car
  default_scope { order("name desc") }
end