Update i validiacia

Witam.
Mam tabelę w której są pola name i default i chciałbym aby nie można było usunąć rekordów gdzie default = true a także tam gdzie default = true nie chciał bym aby user mógł zmienić pole name.
Na poziomie kontrolera nie ma problemu ale moje pytanie brzmi czy można zrobić to na poziomie modelu.

Z destroy jakoś sobie poradziłem:

before_destroy :default_destroy

def default_destroy
if default?
return false
end
end

Pozdrawiam.

To before_save też powinno dać radę :wink:

Chyba się udało.

before_destroy :default_destroy
before_update :default_update

def default_update
if Admin::Page.find(self).default?
if title_change
errors.add(:title, ’ jest integralną częścią strony i nie może zostać zmieniony.’)
return false
end
if default_change
return false
end
end
end

def default_destroy
if default?
return false
end
end

[code=ruby]class Admin::Page < ActiveRecord::Base
validate :can_change_name?, on: :update
validate :can_destroy?, on: :destroy

def can_change_name?
errors.add(:title, ‘foobar’) if name_changed? && default?
end

def can_destroy?
!default?
# ewentualnie troche czytelniej:
# false if default?
end
end[/code]
a to mistrz:

Admin::Page.find(self)

:smiley: