我已尝试为模型添加before_destroy,但我遇到了一些问题,我无法理解问题出在哪里。模型ReturnCode
的销毁是从其他模型Command
调用。在{{ 1}}有Command
ReturnCode
列,如何解决问题。我使用的是Rails 2.3.12
return_code_id
models/Command
端
after_save :delete_old_private_return_code
def delete_old_private_return_code
if !self.return_code_id_was.nil? && self.return_code_id_was != self.return_code_id
return_code = ReturnCode.find(self.return_code_id_was)
if !return_code.nil? && return_code.private?
return_code.set_audit_key(self.command_set.audit_key, self.command_set.audit_area)
return_code.return_code_texts.each do|text_param|
text_param.set_audit_key(self.command_set.audit_key, self.command_set.audit_area)
end
return_code.destroy
end
end
models/ReturnCode
attr_protected :created_at, :updated_at, :shipped_data
acts_as_taggable_on :tags
before_validation :strip_spaces
has_many :commands
has_many :return_code_texts, :dependent => :destroy
accepts_nested_attributes_for :return_code_texts, :allow_destroy => true
before_save :sort_action_list
before_save :set_audit_parent
before_update :audit_line_number
before_destroy :set_audit_parent
before_destroy :audit_line_number
has_one :record_level_security, :as => 'securable', :dependent => :destroy
validates_presence_of :name, :if => Proc.new{|return_code| return_code.shared?}
validates_length_of :name, :maximum => 20, :allow_nil => true, :if => Proc.new{|return_code| return_code.shared?}
validates_uniqueness_of :name, :case_sensitive => false, :if => Proc.new{|return_code| return_code.shared?}
validates_presence_of :description, :if => Proc.new{|return_code| return_code.shared?}
validates_length_of :description, :maximum => 50, :allow_nil => true, :if => Proc.new{|return_code| return_code.shared?}
validate :validate_values_matching
validate :validate_action_list
validate :validate_text_list
validate :cannot_change_standard_name
def audit_line_number
command = Command.find_by_return_code_id(id)
Audit.add_audit_changes({"line_number" => [command.line_number, command.line_number]})
end
Error