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

  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • GirlSanctuaryBlog

    GirlSanctuar

    28 Aralık 2011
  • The Pet Collective

    The Pet Coll

    5 Ocak 2012