Я использую devise для обработки своей аутентификации пользователя, и в своей модели пользователя я заявил, что у каждого пользователя есть has_one: role.
Я использую другую таблицу для хранения всех моих пользовательских ролей / разрешений, и мне было интересно, как обновить роль?
РЕДАКТИРОВАТЬ - вот моя модель пользователя
has_one :role, :dependent => :destroy
accepts_nested_attributes_for :role, :allow_destroy => true
attr_accessible :stuff.... :role
Мой образец для подражания
belongs_to :user
Я добавил это в мою форму:
<%= f.fields_for :role, Role.new do |r| %>
<li class="full_width">
<%= r.label "User type" %>
<%= r.select(:status, %w[member artist commercial],{:include_blank => false}) %>
</li>
<% end %>
но он никогда не сохраняет запись роли, я думаю, это потому, что в пользовательской модели не было attr_accessible: role, поэтому я настроил ее, и теперь при попытке сохранить я получаю ошибку AssociationTypeMismatch
РЕДАКТИРОВАТЬ - добавлен accepts_attributes_for, и теперь я не получаю сообщение об ошибке, но запись роли не сохраняется. Консольные шоу
ПРЕДУПРЕЖДЕНИЕ. Невозможно массово назначить защищенные атрибуты: role_attributes