Rails 3: как обновить только 1 атрибут? - PullRequest
1 голос
/ 01 декабря 2010

Как я могу обновить только 1 атрибут в базе данных, БЕЗ необходимости вставлять проверки?

например:

У меня есть пароль как присутствие = true. Когда я хочу редактировать базу данных, я должен передать пароль. Я хочу изменить 1 поле без ввода пароля.

Я пробовал update_attribute, объединить, но ни один не работает.

Спасибо. Дональд

Редактировать: Даже при проверке, которая работает на консоли, она все равно помещает туда пароль.

Вот проверка:

 def password_validation_required?
      encrypted_password.blank? || !@password.blank?
    end

И когда я отправляю форму без поля пароля, я получаю это на консоли: (пустое поле в поле encrypted_password)

 SQL (0.3ms)  UPDATE "wsps" SET "about" = 'gfg', "encrypted_password" = 'fcf538f9a588befec4ee2567754a42f05b3cd75f24919d49530426786491c3e1', "updated_at" = '2010-11-30 23:56:45.594168' WHERE ("wsps"."id" = 4)

Может, мой контроллер не правильный? у меня есть это:

if @wsp.update_attributes(params[:wsp])

Моя форма:

<%= form_for(@wsp, :html => { :multipart => true } ) do |f| %>

спасибо

1 Ответ

2 голосов
/ 01 декабря 2010

Проверки и обратные вызовы разработаны так, что их довольно сложно игнорировать. Вы можете сделать что-то вроде:

Model.update_all({:my_attribute => 'x'}, {:id => id})

http://rubydoc.info/docs/rails/3.0.0/ActiveRecord/Relation:update_all

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