diff options
Diffstat (limited to 'activerecord/test/models/owner.rb')
-rw-r--r-- | activerecord/test/models/owner.rb | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/activerecord/test/models/owner.rb b/activerecord/test/models/owner.rb index fea55f4535..cedb774b10 100644 --- a/activerecord/test/models/owner.rb +++ b/activerecord/test/models/owner.rb @@ -1,5 +1,36 @@ class Owner < ActiveRecord::Base self.primary_key = :owner_id - has_many :pets + 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 + + accepts_nested_attributes_for :pets, allow_destroy: true + + 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 |