2
version : Rails 3.2.22.2 

değiştirmeden Gem modeline bir yöntem nasıl eklenir: Bu ActiveModel::MassAssignmentSecurity::Error bana verir https://github.com/charlotte-ruby/impressionistRaylar 3: kullanıcı etkinliğini izlemek Empresyonist mücevher kullanıyorum Gem source

. attr_accessible'u kullanmak için Impression modülünü mücevherden geçersiz kılmak istiyorum.

1:

Ben 2 şey denedim

a = Impression.first 
a.hello 
: initializer/impression.rb yılında

class Impression 
    def hello 
    "hello world" 
    end 
end 

app/models altında impression.rb dosyası oluşturun,

require 'impression' 

Konsolun üzerinde aşağıdakileri deneyin

Yöntem bulunamadı hatası alıyorum.

2: Ben initializezs/impression.rb dosyasındaki kod eklendi:

Impression.class_eval do 
    def hi 
     puts 'you got me!' 
    end 
end 

ve hala noktasında aynı hata var 1.

nasıl etkili bir mücevher dan modelini geçersiz kılabilir?

cevap

2

Kodumun çalışmasını sağlamak için aşağıdaki değişiklikleri yaptım.

class Impression < ActiveRecord::Base 
     attr_accessible :impressionable_type, :impressionable_id, :controller_name, :action_name, :user_id, :request_hash, :session_hash, :ip_address, :referrer 

     def hello 
      "hello WORLD!" 
     end 
end 

tüm yardımlarınız Gem Aslen model/impression.rb sınıfı hiç yöntemleri vardır

+0

Benim için zevk bu çözümü buldu. Bu harika. –

1

2 yöntemle gitmeyi tercih ederim. Ama zaten bir sınıfa dahil olup olmadığınızı görüyorsunuz. Daha sonra onu geçersiz kılmak için model/impression_decorator.rb’unuzda kullanmanız gerekir.

Impression.class_eval do 
    attr_accessor :something 

    def hi 
    puts 'you got me! #{someting}' 
    end 
end 
+0

için size @Mohammad Shahadat Hossain ederiz kodu aşağıdaki ile>initializer/my_monkey_patch.rb - başlatıcıları altında bir dosya oluşturun. Bu modele attr_accessible eklemek istiyorum: some_existing_field ve bazı yöntemler. – KavitaC

+0

O zaman yukarıdaki gibi bir şeyler yapabilirsiniz. Impression.class_eval' kullanmanız gereken her şey. Mümkün olduğunca herhangi bir yöntem ve attr_accessor kullanın. –

+0

Model/impression_decorator.rb dosyasını oluşturdum ve buna bahsettiğiniz kodu ekledim. Başlatıcıda hiçbir şey yok. Uygulamayı yeniden başlattığımda hala 'hi' yöntemine erişemiyorum – KavitaC

İlgili konular