如何从多个表创建数组

时间:2013-01-14 19:18:08

标签: arrays ruby-on-rails-3 multidimensional-array

我有3种型号:运营商,产品,价格。每个运营商has_many :products和每个产品has_many :rates。我正在尝试创建一个html表,它将遍历每个产品并显示仅最新的速率。我假设我需要将它存储在一个数组(或哈希?)中,但不太确定如何(因为我是编程新手,但学习!)。有人可以帮忙吗?

2 个答案:

答案 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 %>