使用不同的方法 rails4 时出错
Error while using distinct method rails4
我正在使用带 mysql 数据库的 rails4。我想获取唯一名称并且我正在使用不同的方法。
产品模板
<%= collection_select(:metal, @product.id, @product.metal_specs.all, :id, :unique_name) %>
金属规格模型
def unique_name
self.select(:name).distinct
end
但它给我一个错误-私有方法“select”调用了 MetalSpec。
请帮我解决这个问题。
您正在尝试对模型 MetalSpec 调用 select,而您想对集合调用 select。
如果不知道你的模式很难说,但也许你需要类似的东西
self.metal_specs.select(:name).distinct
在您的产品模型中
has_many :metal_specs , -> { distinct }, through: :metals
这样解决了。 :)
您的代码正在实例上调用 select。
此外 - 如果您只需要一个名称列表,我建议您使用 pluck。由于这是返回一个名称列表,我认为该方法应该是复数
def unique_names
metal_specs.pluck(:name).uniq
end
我正在使用带 mysql 数据库的 rails4。我想获取唯一名称并且我正在使用不同的方法。 产品模板
<%= collection_select(:metal, @product.id, @product.metal_specs.all, :id, :unique_name) %>
金属规格模型
def unique_name
self.select(:name).distinct
end
但它给我一个错误-私有方法“select”调用了 MetalSpec。
请帮我解决这个问题。
您正在尝试对模型 MetalSpec 调用 select,而您想对集合调用 select。
如果不知道你的模式很难说,但也许你需要类似的东西
self.metal_specs.select(:name).distinct
在您的产品模型中
has_many :metal_specs , -> { distinct }, through: :metals
这样解决了。 :)
您的代码正在实例上调用 select。
此外 - 如果您只需要一个名称列表,我建议您使用 pluck。由于这是返回一个名称列表,我认为该方法应该是复数
def unique_names
metal_specs.pluck(:name).uniq
end