0

3 つのモデルがあります: Carriers、Products、Rates です。各運送業者has_many :productsおよび各製品has_many :rates各商品をループして最新のレートのみを表示する html テーブルを作成しようとしています。これを配列(またはハッシュ?)に保存する必要があると思いますが、方法がよくわかりません(プログラミングは初めてですが、学習中です!)。誰か助けてくれませんか?

4

2 に答える 2

1

最新のレートは、データベースで作成された最後のレートです。limit 1この情報が正しい場合、作成日の降順 ( ) で並べ替えられた1 つの行 ( ) だけを取得する SQL クエリで、created_at DESC必要なレコードが取得されることを意味します。これを知っていれば、レート モデルにスコープを作成できます。

scope :current_rate, order('rates.created_at DESC').limit(1).first
# As @AntohnyAlberto said, limit would bring an array, so you may use .first on the results
# Or you can use just .first, as it would bring only the first one
scope :current_rate, order('rates.created_at DESC').first

ビューの製品ループでこのスコープを使用します。

  <%= product.rate.current_rate %>
于 2013-01-14T19:28:06.937 に答える
0

私はこのようなモデルを行います:

class Product < ActiveRecord::Base
  def current_rate
    rates.order('created_at ASC').last
  end
end

そして、これはビューで:

<%= product.current_rate %>
于 2013-01-14T19:43:50.443 に答える