Отменить изменения атрибутов - PullRequest
3 голосов
/ 22 сентября 2010

Я передаю 4 значения из моей формы.

attr1
attr2
attr3
attr4

On before_save

def before_save
  if condition == true
    # here i want to revert changes of attributes ...
    # Right now i am doing this for reverting....
    self.attr1 = self.attr1_was
    self.attr2 = self.attr2_was
  end
end 

Есть ли лучший способ отменить изменения, кроме некоторых атрибутов? Я хочу вернуть все атрибуты, кроме одного или двух ..

Ответы [ 2 ]

1 голос
/ 23 сентября 2010

Это должно сработать, но если вы делаете это только на нескольких полях, я не понимаю, почему бы вам просто не написать их явно

def before_validation
  if condition == true
    for x in [:attr1, :attr2, :attr3]
      self.send("#{x}=", send("#{x}_was")
    end
    return false
  end
end
1 голос
/ 22 сентября 2010

Есть ли атрибуты, которые можно изменить, если condition == true, если нет, вы можете просто отменить сохранение, сделав объект недействительным.Вы можете сделать это так:

class YourModel < ActiveRecord::Base
  def validate
    if condition = true
      errors.add(:base,"condition is true")
      return false
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...