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