mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
2c555ec43a
than existing column. Fixes #15480.
34 lines
671 B
Ruby
34 lines
671 B
Ruby
class Owner < ActiveRecord::Base
|
|
self.primary_key = :owner_id
|
|
has_many :pets, -> { order 'pets.name desc' }
|
|
has_many :toys, :through => :pets
|
|
|
|
belongs_to :last_pet, class_name: 'Pet'
|
|
scope :including_last_pet, -> {
|
|
select(%q[
|
|
owners.*, (
|
|
select p.pet_id from pets p
|
|
where p.owner_id = owners.owner_id
|
|
order by p.name desc
|
|
limit 1
|
|
) as last_pet_id
|
|
]).includes(:last_pet)
|
|
}
|
|
|
|
after_commit :execute_blocks
|
|
|
|
def blocks
|
|
@blocks ||= []
|
|
end
|
|
|
|
def on_after_commit(&block)
|
|
blocks << block
|
|
end
|
|
|
|
def execute_blocks
|
|
blocks.each do |block|
|
|
block.call(self)
|
|
end
|
|
@blocks = []
|
|
end
|
|
end
|