Проблемы с update_attributes для логического поля - PullRequest
0 голосов
/ 21 сентября 2011

Моя модель похожа на это

  field :first_name, :type => String
  field :last_name, :type => String
  field :admin, :type => Boolean, :default => false
  field :write_article, :type => Boolean, :default => false

Теперь, когда я пытаюсь обновить мою модель с помощью

@user = User.find(params[:id])
if @user.update_attributes(params[:user])
  flash[:notice] = "Successfully updated User."
  redirect_to users_path
else
  render :action => 'edit'
end

, поле write_article не обновляется.Это всегда ложь.Я попытался отладить код, и я получаю write_article = 1 в params [: user].Однако при обновлении значение все равно устанавливается в false.Итак, мне пришлось добавить следующее

@user.write_article = params[:user]['write_article']

, чтобы явно установить значение перед использованием вызова update_attributes.Любое предложение?Он должен был работать без вышеуказанной строки

1 Ответ

1 голос
/ 21 сентября 2011

Ваш код указывает, что вы не используете ActiveRecord. Если вы используете ORM, отличный от ActiveRecord, вы можете указать, какой из них вы используете (например, DataMapper, Mongoid).

Если ваше поле по какой-либо причине не обновлено, это может быть связано с массовым назначением.

Попробуйте добавить attr_accessible :admin. См. подробности о проблеме массовых назначений в Руководстве по рельсам .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...