5

親モデルがあり、「@client.update_attributes(params[:client]」などのパラメーターを介して更新されます。私のパラメーターには、「client_card」を破棄する呼び出しがあります。client_card にそれを防ぐ before_destroy メソッドがあります。私の before_destroy メソッドは機能していますが、更新時に before_destroy のエラーが関連モデルに伝播しません. 更新時にこのモデル エラーを関連モデルに伝播する方法に関するアドバイスはありますか?

class Client < ActiveRecord::Base
  has_many :client_cards, :dependent => :destroy
  validates_associated :client_cards

class ClientCard < ActiveRecord::Base
  belongs_to :client, :foreign_key => 'client_id'

  attr_accessible :id, :client_id, :card_hash, :last_four, :exp_date

  before_destroy :check_relationships

  def check_finished_appointments
    appointments = Appointment.select { |a| a.client_card == self && !a.has_started }
    if(appointments && appointments.length > 0 )
      errors.add(:base, "This card is tied to an appointment that hasn't occurred yet.")
      return false
    else
      return true
    end
  end

end
4

2 に答える 2

0

それが機能している可能性はありますか?コントローラーの削除アクションが通常のようにインデックスにリダイレクトしている場合、リダイレクトによってモデルがリロードされるため、エラーは表示されません。

于 2013-06-10T19:39:48.897 に答える