使用不同的方法rails4时出错

时间:2015-03-31 06:11:22

标签: ruby-on-rails distinct

我正在使用带有mysql数据库的rails4。我想获取唯一的名称,我使用不同的方法。 产品模板

<%= collection_select(:metal, @product.id, @product.metal_specs.all, :id, :unique_name) %>

MetalSpec模型

def unique_name
  self.select(:name).distinct
end

但它给了我一个错误 - 私有方法`select'调用MetalSpec。

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

您正尝试在模型MetalSpec上调用select,而您想在集合上调用select。

如果不知道你的架构很难说,但也许你需要像

这样的东西
self.metal_specs.select(:name).distinct

在您的产品型号中

答案 1 :(得分:0)

 has_many :metal_specs , -> { distinct }, through: :metals

解决了这个问题。 :)

答案 2 :(得分:0)

您的代码在实例上调用select。

另外 - 如果你只是一个名单列表,我建议你使用pluck。由于这是返回一个名单,我认为该方法应该是复数

def unique_names
  metal_specs.pluck(:name).uniq
end