SORU
17 Aralık 2008, ÇARŞAMBA


Geçersiz ActiveRecord yöntemleri öznitelik

Neden bahsettiğimi bir örnek:

class Person < ActiveRecord::Base
  def name=(name)
    super(name.capitalize)
  end
  def name
    super().downcase  # not sure why you'd do this; this is just an example
  end
end

Bu iş gibi görünüyor, ama sadece ActiveRecord::Base docs geçersiz öznitelik yöntemleri ile ilgili bölümü okudum ve read_attribute write_attribute yöntemleri kullanarak önerir. Bir örnekte yukarıda ne yaptığımı sorun olmalı diye düşündüm; aksi halde, neden bu yöntemleri korusun ki "yol öznitelik yöntemleri geçersiz kılmak için"? Ayrıca çok çirkin bir deyim zorluyorlar, iyi bir nedeni olmalı

Asıl sorum şu: bu örnek ile yanlış bir şey var mı?

CEVAP
18 Aralık 2008, PERŞEMBE


Gareth yorum yankılanan... kod yazılı olarak çalışmaz. Bu şekilde yazılmış olmalıdır:

def name=(name)
  write_attribute(:name, name.capitalize)
end

def name
  read_attribute(:name).downcase  # No test for nil?
end

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kayla Caton - Peet

    Kayla Caton

    23 HAZİRAN 2012
  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • picster

    picster

    20 NİSAN 2006