我有3种型号:运营商,产品,价格。每个运营商has_many :products
和每个产品has_many :rates
。我正在尝试创建一个html表,它将遍历每个产品并显示仅最新的速率。我假设我需要将它存储在一个数组(或哈希?)中,但不太确定如何(因为我是编程新手,但学习!)。有人可以帮忙吗?
答案 0 :(得分:1)
最近的费率是您在数据库中创建的最后一个费率。如果此信息为真,则意味着SQL查询只获得按创建日期降序(limit 1
)排序的一行(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 %>
答案 1 :(得分:0)
我会做这样的模型:
class Product < ActiveRecord::Base
def current_rate
rates.order('created_at ASC').last
end
end
然后在视图中:
<%= product.current_rate %>