ActiveRecord::RecordNotFound Hatası Nedir?
Örneğin:
```ruby
@user = User.find(100)
```
Yukarıdaki kod, ID'si 100 olan bir kullanıcıyı arar. Ancak veritabanında böyle bir kullanıcı yoksa, ActiveRecord::RecordNotFound hatası meydana gelir.
Hata Nasıl Çözülür?
Hata ile karşılaştığınızda ilk yapmanız gereken şey, gerçekten aradığınız kaydın veritabanında mevcut olduğuna emin olmaktır. Eğer doğru ID'yi kullanıp kullanmadığınızı kontrol ettiyseniz, ve hâlâ aynı hatayı alıyorsanız, kaydın silinmiş ya da başka bir nedenden ötürü mevcut olmadığından emin olun.
2. find_by Metodunu Kullanın
find metodunun hemen yerine find_by metodunu kullanarak bu hatayı önleyebilirsiniz. find_by, kaydı bulamazsa `nil` döndürür, böylece hata almazsınız.
Örneğin:
```ruby
@user = User.find_by(id: 100)
```
Bu kod, ID'si 100 olan kullanıcıyı bulmaya çalışır, ancak bulunamazsa `nil` döndürür. Böylece, uygulamanızda herhangi bir hata meydana gelmeden işlem yapabilirsiniz.
3. Rescue Blokları Kullanarak Hata Yönetimi
Hataları yönetmenin bir başka yolu da rescue bloklarını kullanmaktır. Bu, hatayı yakalamayı ve uygulamanızın çökmesini engellemeyi sağlar.
```ruby
begin
@user = User.find(100)
rescue ActiveRecord::RecordNotFound
# Hata durumu için özel bir işlem
@user = nil
end
```
Burada, `find` metodu tarafından fırlatılan hatayı yakalayıp, uygun bir şekilde işleyebilirsiniz.
4. Arama Kriterlerini Gözden Geçirin
Eğer belirli bir kaydın bulunamaması sizi zor durumda bırakıyorsa, sorgu kriterlerinizi gözden geçirin. Bazen sadece ID yerine daha fazla kriterle arama yapmak, istenen sonuca ulaşmanıza yardımcı olabilir.
Örneğin:
```ruby
@user = User.find_by(name: 'Ahmet', email: 'ahmet@domain.com')
```