триггер before_validation только для одного конкретного столбца - PullRequest
1 голос
/ 25 июля 2011

Я пытаюсь выяснить, как вызвать before_validation только для одного конкретного столбца, как вы можете видеть ниже.

class PartType < ActiveRecord::Base
  before_validation :fix_quotation

  protected
    def fix_quotation
      self[:quotation] = quotation_before_type_cast.tr(' $, ' , '.' ) if attribute_names().include?("quotation")
    end
end

, но в этом случае атрибуты-имена не работают.

У меня есть некоторые другие столбцы в этой модели, и если я внесу какие-либо изменения в другие столбцы, эта проверка сработает.

Эта проверка работает нормально со столбцом "цитата", но я этого не хочутриггер проверки при изменении "столбца заголовка, например.

ПРИМЕЧАНИЕ: я использую гем под названием" on_the_spot "для редактирования значений столбца" на месте "

1 Ответ

2 голосов
/ 25 июля 2011

Вот как должна быть определена ваша модель:

class PartType < ActiveRecord::Base
  before_validation :fix_quotation, :if => :quotation_changed? #this is where the magic happens

  protected
  def fix_quotation
    self[:quotation] = quotation_before_type_cast.tr(' $, ' , '.' ) if attribute_names().include?("quotation")
  end
end
...