もともとuser_helper.rbに記述していたメソッドを新しく作成したcareer_decorator.rbに移動したいのですが、undefined method `term' for #のエラーがでます。
いくら考えて、実行しても改善できないので質問させていただきました。
以下は現状のコードです

career_decorator.rb (user_helper.rbから移動したコード)

module CareerDecorator

  def term
    start_date = l(start_date, format: :term)

    if end_date.blank?
      "#{start_date} - #{t('date.formats.ongoing')}"
    else
      "#{start_date} - #{l(end_date, format: :term)}"
    end
  end

  def distance_of_term
    if end_date.blank?
      t('datetime.distance_in_words.ongoing')
    else
      distance_of_time_in_words(start_date, end_date)
    end
  end
end

app/views/users/user.html.slim

@user.careers.order('start_date desc, end_date desc').each do |career|
  tr
    td
      p = link_to career.term, edit_user_career_path(user_id: @user, id: career)
      p = career.distance_of_term
      td = career.title

user_helper.rb(もともとはこのファイルの以下のようなtermとdestance_of_termメソッドがあり、これをcareer_decorator.rbに移動したい)

module UsersHelper
  def term(career)
    start_date = l(career.start_date, format: :term)

      if career.end_date.blank?
        "#{start_date} - #{t('date.formats.ongoing')}"
      else
        "#{start_date} - #{l(career.end_date, format: :term)}"
      end
    end

  def distance_of_term(career)
    if career.end_date.blank?
      t('datetime.distance_in_words.ongoing')
    else
      distance_of_time_in_words(career.start_date, career.end_date)
    end
  end
end

careerがtermメソッドを持っていないことはなんとなくわかっていますがどうしたら良いのかわかりません。

自分なりの考え

  • helperからdecoratorに該当メソッドを移動する時にコピペだけだとだめっぽい=>decoratorのメソッドを変更するのか
  • モデルのアソシエーション操作が必要なのか?
  • decorator.rbは手打ちではなくコマンドで作成しないといけないのか??=> rails g decorator careerとやったらgem周りでエラーが出ました
  • careerオブジェクトがtermメソッドを持っていない
  • users_controller.rbのshowにcareerのインスタンスを作成する必要がありそう

ヒントいただければ幸いです。