1

paper Trail gem を使用して、オーダー Web アプリケーションのバージョン変更を追跡しています。has_many バージョンの表示に問題があります

注文モデル:

class Order < ActiveRecord::Base
  has_paper_trail
  has_many :line_items, dependent: :destroy, inverse_of: :order, order: "position", autosave: true
end

広告申込情報モデル:

class LineItem < ActiveRecord::Base
  belongs_to :order, inverse_of: :line_items
  has_paper_trail
end

注文管理者:

@order = Order.find(params[:id])
@versions = PaperTrail::Version.where(item_id: params[:id]).order('created_at ASC')
@line_items = LineItem.find_all_by_order_id(params[:id])
@line_item_versions = @line_items.versions

履歴html:

<% @line_item_versions.each_with_index do |version, index| %>
  <b>Version: </b><%= index + 1 %><br/>
  Event ID: <%= version.id %><br/>
  <b>Target:</b> <%= version.item_type %>
  <small>(id: <%= version.item_id %>)</small>; <b>action</b> <%= version.event %>;<br/>
<% end %>

問題は、.versions単一のオブジェクト (から.find) が見つかった場合の動作です。ただし、( からの) オブジェクトの配列.find_all_byが に渡されると、.versionsこのエラーが返されます。

undefined method `versions' for #<Array:0x007f859d37eb30>
4

1 に答える 1