У меня есть модель User
, которая has_one :profile
, а модель profile
имеет столбец type
для наследования одной таблицы. Я хочу, чтобы пользователь установил type
при регистрации, и у меня возникают проблемы при этом.
Я пытаюсь это сделать в контроллере своих профилей:
def create
@profile = Profile.find(params[:id])
type = params[:user][:profile_attributes][:type]
if type && ["Artist","Listener"].include?(type)
@profile.update_attribute(:type,type)
end
end
и это в моей форме для User
нового представления:
<%= form_for(setup_user(@user)) do |f| %>
...
<%= f.fields_for :profile do |t| %>
<div class ="field">
<%= t.label :type, "Are you an artist or listener?" %><br />
<p> Artist: <%= t.radio_button :type, "Artist" %></p>
<p> Listener: <%= t.radio_button :type, "Listener" %></p>
</div>
<% end %>
...
<% end %>
и в моем приложении помощник:
def setup_user(user)
user.tap do |u|
u.build_profile if u.profile.nil?
end
end
Не получается установить type
при создании пользователя. По умолчанию все равно nil
. Почему это так и как я могу это сделать? Буду признателен за пример кода.
UPDATE:
Это соответствующий код в моей User
модели:
has_one :profile
accepts_nested_attributes_for :profile
before_create :build_profile
ОБНОВЛЕНИЕ 2: Я получаю эту ошибку: WARNING: Can't mass-assign protected attributes: type