Не удается отправить флеш-сообщение из метода Model - PullRequest
1 голос
/ 07 июня 2010

Я пытаюсь предотвратить удаление записи, имеющей отношение к другой записи. Я могу остановить удаление, но не могу отправить флэш-сообщение, как я надеялся!

class Purchaseitem < ActiveRecord::Base
  before_destroy :check_if_ingredient

  ...

  def check_if_ingredient
    i = Ingredient.find(:all, :conditions => "purchaseitem_id = #{self.id}")
      if i.length > 0
        self.errors.add(:name)
      flash.now[:notice] = 
        "#{self.name} is in use as an ingredient and cannot be deleted"
      return false
    end
  end

Это предотвратит удаление без строки flash, и когда я добавлю его, я получу:

неопределенная локальная переменная или метод `flash 'для #

Любая помощь будет высоко ценится!

Ответы [ 2 ]

4 голосов
/ 07 июня 2010

Управление флэш-памятью принадлежит контроллеру.

Ваша модель должна возвращать true / false из check_if_ingredient, а контроллер должен отображать флэш-сообщение на основе возвращаемого значения check_if_ingredient

0 голосов
/ 07 июня 2010

Вы должны сделать это в вашем контроллере.

# controller
if @purchaseitem.destroy
   flash.now[:notice] = 
      "#{@purchaseitem.name} was successfully deleted"
else
   flash.now[:notice] = 
      "#{@purchaseitem.name} is in use as an ingredient and cannot be deleted"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...