2010-12-16 32 views
10
bir Raylar modeli için bir yöntem eklemek istediğiniz

üzerine yazım karşı yeniden açılması, test kullanılır. Ben Raylar konsolunda veya çalışma zamanında yüklenen bir dosyada buRuby/Raylar: bir sınıf

class Model 
    def something_new 
    do_something 
    end 
end 

yaparsanız, Model üzerine yerine değiştirilir. Yukarıdaki satırlardan önce v = Model.class gibi bir şey koyarsam, yeni yöntem varolan sınıfa başarıyla eklenir. Görünüşe göre, mevcut bir sınıfın yeniden açıldığına işaret etmek için referans gereklidir. Öte yandan

, öncelikle programa başvurmak zorunda kalmadan Fixnum, diyelim ki, bir yöntemi ekleyebilirsiniz. Burada neler oluyor ve mevcut bir sınıfın üzerine yazılmasından ziyade yeniden açılıp değiştirilmesinin sağlanmasının olağan yolu nedir?

Teşekkürler. Kullanmadan önce sınıf gerektirmeyen konum gibi

cevap

11

geliyor. Model.class yazdığınızda ve Model sınıfı yoksa, Rails otomatik olarak size Model getiriyor. Sadece class Model yazarsanız, bunu bir sınıf tanımı olarak görür. Sadece require 'model' yapmalı.

+0

Sağol, bu sorun oldu. Model sınıfının zaten kabul edildiğini gördüğümde, bunun sadece "otomatik olarak" tanındığını fark etmemiştim. –

4

Kullanım class_eval, sen sınıf doğru yolu yeniden açılması olacağını yolu.
İşte reopening classes üzerinde çok iyi bir makale.

+0

Teşekkürler. Bu güzel bir yazı. –