2

パラメータを混合メソッドに渡すベストプラクティスの方法はありますか?

ミックスインを使用するクラスは、混合メソッドが期待するインスタンス変数を設定するか、必要なすべてのパラメーターを引数として混合メソッドに渡すことができます。

この背景には、コンテンツのパブリッシュを行う Rails コントローラーがありますが、他のコントローラーやモデルでさえ「パブリッシャーとして機能する」ことができる必要があるため、コントローラーのメソッドをモジュールに分解し、それをミックスインします。必要です。

たとえば、「パブリッシャーとして機能する」必要がある Rails コントローラーのコードで、混合メソッド question_xhtml() を呼び出します...

def preview
    @person = Person.find params[:id]
    @group = Group.find params[:parent_id]
    @div = Division.find params[:div_id]
    @format = 'xhtml'
    @current_login = current_login
    xhtml = person_xhtml() # CALL TO MIXED-IN METHOD
    render :layout => false
end

最終的に、question_xhtml にはこれらすべてが必要です。このアプローチは合理的ですか、それともそうする方が良いでしょうか

def preview
    person = Person.find params[:id]
    group = Group.find params[:parent_id]
    div = Division.find params[:div_id]
    format = 'xhtml'
    xhtml = person_xhtml(person, group, div, format) # CALL TO MIXED-IN METHOD
    render :layout => false
end

...または、他の何か?

4

1 に答える 1

0

私はあなたができるはずだと思います:

module ActAsPublisher
  def person_xhtml
    do_stuff_with(@person, @group, @div, @format, @current_login)
    # eg. use instance variable directly in the module
  end
end

class WhateverController < Application Controller
  act_as_publisher
  ...
end

script/generate プラグイン act_as_publisher を使用した場合。

于 2010-05-20T19:54:58.570 に答える