我有三个模型:运营商,产品,费率。每个载体has_many :products
和每个产品has_many :rates
。我试图创建一个html表,将循环通过每个产品,并显示只有最新的利率。我假设我需要将其存储在数组(或散列?)中,但不太确定如何存储(因为我是编程新手,但正在学习!)。有人能帮帮我吗?
最近的汇率是在数据库上创建的最后汇率。如果这个信息是真的,那就意味着一个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 %>
我将这样做模型:
class Product < ActiveRecord::Base
def current_rate
rates.order('created_at ASC').last
end
end
然后这个在视图中:
<%= product.current_rate %>