One to many i usuwanie

Witam

Jak zapobiec usunięciu rekordu z tabeli kategorie, kiedy jest wiele postow w danej kategorii?
Mozna dodac bezposrednio w bazie CONSTRAINT emp_category FOREIGN KEY (category)
REFERENCES categories (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
A jak sie to załatwia w RoR?

Pozdrawiam

Najprościej użyć odpowiedniego wywołania zwrotnego, w tym wypadku wyglądało by to mniej więcej tak:

[code=ruby]class Category < ActiveRecord::Base
has_many :posts
before_destroy :ensure_empty_category

protected

def ensure_empty_category
false unless self.posts.empty?
end
end[/code]
Zamiast po prostu zwracać false możesz też rzucić odpowiednim wyjątkiem.

A mozesz podac przyklad z tym wyjatkiem lub slowa kluczwe wg ktorych sam sobie poszukam.

Chcialbym powiadomic o tym ze nie mozna usunac kategorii poniwaz sa posty w danej kategoriuii lub cos w ten desen.

Pozdrawiam

def ensure_empty_category raise(ActiveRecord::ActiveRecordError, "category is not empty") unless self.post.empty? end
oczywiście dużo więcej informacji o wyjątkach w ruby oferuje google :wink: