2013-09-03 9 views
8

Ben raylar üzerinde yakut yeni olduğum için kullanılır neraylar kodu ile giderken attr_internal

attr_internal :response_body 
    attr_internal :action_name 
    attr_internal :formats 

o ne yapar ne bulmuştur? Neden müdahale organı veya eylem adı için hareket gönderimi için attr_internal kullanmışlar?

cevap

0

İçsel olarak adlandırılan örnek değişken tarafından desteklenen bir öznitelik okuyucusu ve yazarı bildirir. Bu

içine

http://rubydoc.info/docs/rails/Module:attr_internal bakış Rails adı çatışmayı önlemek için bu attr_internal sunduğu Bu farkedilmeli hileler

+0

Daha fazla bilgi için doc'a bakın –

4

burada

https://github.com/rails/docrails/blob/master/activesupport/lib/active_support/core_ext/module/attr_internal.rb

def attr_internal_define(attr_name, type) 
    internal_name = attr_internal_ivar_name(attr_name).sub(/\[email protected]/, '') 
    class_eval do # class_eval is necessary on 1.9 or else the methods a made private 
    # use native attr_* methods as they are faster on some Ruby implementations 
    send("attr_#{type}", internal_name) 
    end 
    attr_name, internal_name = "#{attr_name}=", "#{internal_name}=" if type == :writer 
    alias_method attr_name, internal_name 
    remove_method internal_name 
end 


# use native attr_* methods as they are faster on some Ruby implementations 
    send("attr_#{type}", internal_name) 

ana dosyayı bak alt sınıflama. Yani, attr_internal :variable okuma ve yazma örneği yöntemi oluşturulduğunda, ikincilere @_variable tarafından erişilir, böylece bir attr_accessor :variable ile alt sınıfta olduğunuzda, hiçbir isim çarpışması mümkün değildir!

İlgili konular