Ruby on Rails 4.1Seleziona enum dal modulo per impostare il ruolo
Sto utilizzando Devise con il ruolo enum. Attualmente imposta un ruolo defunto quando viene creato l'utente. Voglio aggiungere un campo al modulo che crea utenti per impostare il ruolo enum.
Ho letto this ma non dice come utilizzare i nuovi ruoli.
Questa è la classe utente
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
enum role: [:user, :vip, :admin, :developer, :marketing, :support, :translator]
after_initialize :set_default_role, :if => :new_record?
def set_default_role
self.role ||= :user
end
Questa è la parte del modulo in cui sto cercando di avere una selezione per scegliere un ruolo enum:
<div class="form-group">
<%= f.collection_select :role, User.roles, :id, :enum, {prompt: "Select a role"}, {class: "form-control input-lg"} %>
</div>
L'errore:
NoMethodError - undefined method `enum' for ["user", 0]:Array:
actionview (4.1.1) lib/action_view/helpers/form_options_helper.rb:761:in `value_for_collection'
Non ho mai usato enum prima e the documentation non si è rivelato utile. Come faccio a mostrare le opzioni enum?
L'unica cosa che rimane da fare è sovrascrivere il Devise :: RegistrationsController # create per consentire il ruolo ora. +1 – DDDD
Non è necessario sovrascrivere il controller delle registrazioni. Puoi farlo nel controller dell'applicazione. Vedi il mio [Rails Devise Tutorial] (http://railsapps.github.io/rails-devise/) o il [README di sviluppo] (https://github.com/plataformatec/devise). –
Penso di averlo fatto in modo non-pigro. Ho creato un utente: RegistrationsController con un before_filter: configure_permitted_parameters che sanitizer.for (: sign_up) Se inserisco quel codice potresti farmi sapere se è un modo sicuro di farlo? – DDDD