簡體   English   中英

如何在 Rails 中擴展 model?

[英]How do I extend a model in Rails?

我需要在 Rails 2.3.11 應用程序中擴展 model 而不接觸原始源文件。 我需要在其中添加一個:has_many association 我已經嘗試了在插件中使用“has_many”擴展 model 中提到的方法,但沒有成功。 我需要擴展的 class 稱為UbiquoUser 這是我在lib/extensions.rb中的代碼:

module Sindicada
  module Extensions
    autoload :UbiquoUser, 'extensions/ubiquo_user'
  end
end
UbiquoUser.send(:extend, Sindicada::Extensions::UbiquoUser)

這是我在lib/extensions/ubiquo_user.rb中的內容:

module Sindicada
  module Extensions
    module UbiquoUser
      module ClassMethods

        def has_audio_favorites
          has_many :audios, :through => :audios_favorite
        end

      end #ClassMethods

    def self.included(base)
      base.extend(ClassMethods).has_audio_favorites
    end

    end #UbiquoUser
  end #Extensions
end #Sindicada

但是,當我嘗試在應用程序上訪問UbiquoUser的屬性音頻時,我收到錯誤undefined method audios for class blablabla

我在environment.rb文件中也有require 'extensions' ,並檢查了文件是否正在加載。

您現在遇到的問題是您正在擴展您的 class,而不是在其中包含模塊,因此Sicada::Extensions::UbiquoUser#included方法永遠不會被調用。

要解決此問題,請更改此行:

UbiquoUser.send(:extend, Sindicada::Extensions::UbiquoUser)

UbiquoUser.send(:include, Sindicada::Extensions::UbiquoUser)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM