Ich habe ein Modell, das die Folge Enum hat:Rails 5 erhalten Enum Schlüssel über Integer-Wert
class User < ApplicationRecord
enum user_type: [:api_user, :web_user]
end
Wenn diese in der Datenbank gespeichert wird, ist es mit dem Integer-Wert speichert, wie erwartet. Ich habe dann eine Funktion, die den Aufzählungs wie folgt aus (in einem Controller) akzeptiert:
do_something_useful(type: User.user_types[:web_user], user: user)
def do_something_useful(options)
some_enum_value = options[:type]
user = options[:user]
# Not a practical example. Just an example to demonstrate the issue.
# Should return Hello, User! You are a web_user type.
# But returns, Hello, User! You are a 1 type.
'Hello, #{user.name}! You are a #{some_enum_value} type.'
end
Das Problem, das ich begegnet bin ist, dass die Optionen [: Typ] den ganzzahligen Wert ist vorbei. Ich möchte den Schlüsselwert von User.user_type durch die ganze Zahl erhalten. Ist das möglich?
Nochmals vielen Dank.
Da Sie ein "Benutzer" -Objekt übergeben und, vorausgesetzt, dass ihm ein 'user_type 'zugewiesen wurde, fragen Sie ihn nicht direkt, um zu sehen, welcher Benutzertyp es ist? 'user.user_type =>" web_user "' –
Mögliches Duplikat von [in Ruby, wie man einen Schlüssel aus dem Hash mit dem Wert extrahiert] (https://stackoverflow.com/questions/13184752/in-ruby-how-to -extract-a-key-from-the-hash-having-the-value) –