你如何在Rails 5上设置动态枚举?

时间:2017-07-06 23:26:09

标签: ruby-on-rails ruby ruby-on-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 %>

1 个答案:

答案 0 :(得分:0)

我认为你真正想要的是:

控制器上的

@options = User.where(account_type: 'Business')
你的观点

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