Измените @ username_array , указав имя и идентификатор пользователя:
Вместо:
["Bob","Sally","Dave"]
Сделайте это:
[["Bob", 1],["Sally",2],["Dave",3]]
Это может быть выполнено примерно так:
@username_array = User.all.map {|user| [user.name, user.id]}
Затем f.select отобразит имя в раскрывающемся списке, но фактическое значение будет передано через params [: customer] [:user_id] будет идентификатором пользователя, который вы хотите.После этого все, что вам нужно в коде действия контроллера, это:
@customer = Customer.new(params[:customer])
Вам не придется искать пользователя по имени, хэш params уже будет иметь правильное значение идентификатора.
Обратите внимание, что вместо того, чтобы сделать @username_array переменной экземпляра, вы можете просто создать вспомогательный метод в помощнике для этого контроллера или помощник приложения:
def user_select
User.all.map {|user| [user.name, user.id]}
end
Затем, на ваш взгляд:
<%= f.select :user_id, user_select %>
Если вы поместите это в свой помощник приложения, вы можете использовать его везде и иметь код только в одном месте (СУХОЙ).