0

次の行を含むプラグインに含まれるクラスがあります

user.rb

class My::User < My::AbstractModel
  delegate :message_t, :to => ApplicationHelper

  #omited
end

したがって、このモデルで application_helper.rb で定義された *'message_t'* 関数を呼び出す必要があります。

ただし、Jenkins は「初期化されていない定数 My::User::ApplicationHelper」というエラーを表示してテストに失敗するため、ユーザー モデルは application_helper.rb の前に読み込まれると思います。どうすれば修正できますか?*'message_t'* を呼び出す別の方法はありますか? または、ファイルの読み込み順序を変更できますか?

4

2 に答える 2

1

モデルレイヤーからレールヘルパーにアクセスすることはできません。ヘルパーは、プレゼンテーションを支援するように設計されており、ビュー(場合によってはコントローラー)レイヤーによって使用されます。

また、delegate任意のクラスではなく、直接関連付けられたモデルにメッセージを転送するために使用することを目的としています。

message_tメソッドをApplicationHelperから、モデルが必要とする可能性のあるライブラリファイルに移動することをお勧めします。次に、を使用する代わりに、プロキシオブジェクトを使用して呼び出しますdelegate。または、この目的のためにプロキシオブジェクトを関連付けて、delegateそのサウンドが気に入った場合に使用することもできます:)

于 2012-09-03T03:54:07.950 に答える
0

require 'application_helper'あなたのモデルでできます。モデルの前に application_helper がロードされるようにします。

于 2012-09-03T04:09:32.967 に答える