2017-07-06 30 views
0

我想創建一個選擇輸入,它需要特定的用戶模型,並將它們顯示爲字符串,同時將它們保存爲整數。通常我會像下面一樣將枚舉設置爲一個靜態哈希。如何在Rails 5上設置動態枚舉?

嘗試創建一個新的產品,我不斷收到以下錯誤:「未定義的局部變量或方法`user_business_hash'」

我試圖移動‘user_business_hash’方法應用/產品控制器,應用程序/產品幫手沒有運氣。

型號

enum user_id: user_business_hash 

validates :user_id, inclusion: user_ids.keys 

def user_business_hash 
# output: {User.business_name => User.id } 
# ex: {"Business Name A"=>2, "Business Name B"=>1, "Business Name C"=>5} 
array = User.where(account_type: 'Business').map{|x| [x.business_name, x.id] } 

hash = array.inject({}) do |memo, (key, value)| 
    memo[key] = value 
    memo 
end 

return hash 
end 

<%= form.select :user_id, Product.user_ids.keys, prompt: 'Select', id: :product_user_id %> 

回答

0

我認爲你真正想要的是:

控制器上

@options = User.where(account_type: 'Business') 

對你的看法

options_from_collection_for_select(@options, "id", "business_name") 
+0

是那正是我需要的 - 謝謝! – Sal