簡體   English   中英

擴展Rails引擎功能

[英]Extending Rails Engine Functionality

我是RoR的初學者,可以使用一些指導。 過去幾天,我一直在認真地討論這個stackoverflow答案。

Rails引擎擴展功能

但是不斷拋出的錯誤是: 'undefined method join'

我有一個名為OrderError的抽象模型。 OrderErrorDetails是我的另一個模型,用於在數據庫中實際存儲數據。 這里的OrderError抽象模型僅用於提供功能,不存儲任何內容。

module MyEngine
  class OrderError
    self.abstract_class = true
    has_one :order_error_detail

    def self.new
      #my_code
    end

  end
end

因此,我嘗試而不是要求進行操作(上面的堆棧溢出鏈接)是將以下代碼放入我的應用程序的“訂單模型”中:

order_error MyEngine::OrderError.new

當我這樣做時,我能夠成功訪問引擎OrderError模型。 但是,我現在得到的錯誤是: 方法.order()必須包含參數。

我的希望是,一旦將引擎安裝到應用程序中,就可以使用多種方法調用引擎。 這將為引擎用戶提供一些默認功能。

我應該從抽象類開始嗎? 在我看來,答案是肯定的,因為我的抽象模型的唯一目的是提供可以使用的方法。 如果是這樣,一個人如何有效地提供對這些方法的訪問?

使用:

MyEngine::OrderError.new 

是擴展引擎模型功能的正確方法。 在上面的示例中,“ new”方法的結構存在一些問題。 這歸結為引擎命名空間。 每個類都封裝在MyEngine的模塊(引擎名稱)中。 因此,您的引擎代碼是模塊化的,並且與其父應用程序代碼分開。 有關命名空間的最佳說明,請參見此處的《引擎入門指南》: http : //guides.rubyonrails.org/v3.2.13/engines.html#what-are-engines

暫無
暫無

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

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