在has_many关系中包含嵌套值

时间:2013-03-28 15:11:46

标签: ruby-on-rails activerecord many-to-many

product.rb

class Product
 attr_accessible :name
 has_many :values
end

value.rb

class Value
 attr_accessible :value
 belongs_to :product
end

如何在值实例(v = Value.find(3))中包含产品名称? 输出值实例必须如下所示:[v.product_name = product.name, v.name]

2 个答案:

答案 0 :(得分:1)

在您的Value模型上创建一个方法,如下所示。

def product_name
  "#{product.name}, #{name}"
end

答案 1 :(得分:1)

v.product.name

会告诉您产品的名称。将其封装在Value方法中以便更好地练习:

class Value
  def product_name
    product.name
  end
end

如果您的问题是您希望在一次数据库调用中完成所有操作,那么您会看到以下内容:

Value.select("values.*, products.name as product_name").joins(:product).find(3)

老实说,我不认为通过id进行搜索是值得的。如果您正在进行返回许多结果的查询,我会急切地加载相关产品并按照我上面的建议进行操作。