User Tools

Site Tools


inf:ruby:rails:active_record_magic

Interesujące sztuczki magiczne w ActiveRecord

scopes

Nakładając kilka na siebie z tym samym atrubytem, ostatni jest brany pod uwagę:

class Car < ActiveRecord::Base
  scope :good, where(:id => 1)
  scope :bad,  where(:id => 2)
end
 
Car.good.bad
SELECT "cars".* FROM "cars" WHERE "cars"."id" = 2
 
Car.bad.good
SELECT "cars".* FROM "cars" WHERE "cars"."id" = 1

Ale gdy zrobimy to samo bez użycia scopów:

Car.where(:id => 1).where(:id => 2)
SELECT "cars".* FROM "cars" WHERE "cars"."id" = 1 AND "cars"."id" = 2

Fixed in Rails 4.

Callbacks

  • Callbacki są wywoływane w porządku, w jakim są umieszczone w modelu,
  • prawie zawsze umieszczamy je po deklaracji asocjacji, ponieważ asocjacje same są zaimplementowane jako callbacki.
inf/ruby/rails/active_record_magic.txt · Last modified: 2021/02/16 09:56 (external edit)