Ruby on Rails 4.1Chọn enum từ biểu mẫu để đặt vai trò
Tôi đang sử dụng Devise với vai trò enum. Nó hiện đang thiết lập một vai trò defualt khi người dùng được tạo ra. Tôi muốn thêm một trường vào biểu mẫu tạo Người dùng để đặt vai trò enum.
Tôi đọc this nhưng không nói cách sử dụng các vai trò mới.
Đây là lớp người dùng
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
Đây là một phần của hình thức mà tôi đang cố gắng để có một lựa chọn để chọn một vai trò quan enum:
<div class="form-group">
<%= f.collection_select :role, User.roles, :id, :enum, {prompt: "Select a role"}, {class: "form-control input-lg"} %>
</div>
Lỗi:
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'
Tôi chưa bao giờ sử dụng enum trước và the documentation không chứng tỏ hữu ích. Làm cách nào để tôi hiển thị các tùy chọn enum?
Điều duy nhất còn lại cần làm là ghi đè lên Devise :: RegistrationsController # tạo để cho phép vai trò ngay bây giờ. +1 – DDDD
Không cần phải ghi đè lên bộ điều khiển Đăng ký. Bạn có thể làm điều đó trong bộ điều khiển Ứng dụng. Xem [Rails Devise Tutorial] của tôi (http://railsapps.github.io/rails-devise/) hoặc [Devise README] (https://github.com/plataformatec/devise). –
Tôi nghĩ tôi đã làm điều đó một cách không lười biếng. Tôi đã tạo một Users: RegistrationsController với một before_filter: configure_permitted_parameters mà sanitizer.for (: sign_up) Nếu tôi đăng mã đó, bạn có thể cho tôi biết nếu đó là cách an toàn để thực hiện nó không? – DDDD