2015-03-31 55 views
1

我正在使用rails4和mysql數據庫。我想獲取唯一的名稱,並使用不同的方法。 產品模板使用不同方法rails4時出錯

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

MetalSpec模型

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

但它給我一個錯誤 - 私有方法'選擇」呼籲MetalSpec。

請幫我解決這個問題。

回答

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

。 :)

1

您正試圖調用模型MetalSpec上的選擇,而您想調用集合上的選擇。

它很難告訴不知道您的架構,但也許你需要像

self.metal_specs.select(:name).distinct 

在此方式解決您的產品型號

+0

unique_name在MetalSpec模型中定義。錯誤在調用select方法。 – dips 2015-03-31 06:26:59

+0

@dips,什麼模型具有屬性'name'以及您嘗試選擇哪些模型集合,所有模型或僅屬於另一個對象的模型。 – RoyTheBoy 2015-03-31 06:35:56

+0

我想僅從與產品關聯的MetalSpec中選擇名稱。 Name是MetalSpec模型的屬性。 – dips 2015-03-31 06:46:51

0

您的代碼正在調用select實例。

另外 - 如果你只是名單後,我建議你使用pluck。由於這是返回一個名稱列表,我認爲該方法應該是複數

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