Perşembe, Aralık 01, 2005

Ruby ve Türkçe

Daha önce Ruby on Rails ın tablolar ve sınıflar arasında tekil çoğul kelime ilişkileri kurduğunu yazmıştım. Yalnız bu iş türkçe tablo isimlerinde problem çıkardı. Örneğin var olan ogretimuye tablosundan bir model oluşturduğumda bunun için ogretimuyes adında bir tablo arıyor. Mysql in view özelliini kullanarak oluşturduğum sanal tablolar da yalnız okunabilir olduğu için çözümü "config" klasöründe yer alan enviroment.rb dosyasında buldum. Dosyanın sonuna şöyle bir tanım ekleyip

Inflector.inflections do |inflect|

inflect.uncountable %w( ogretimuye )
end

tablomuzu oluşturan ismi uncountable olarak gösterdiğimizde sorun çözülüyor.

4 yorum:

Adsız dedi ki...

Rails'te ayarlarda çoğul tablo arama özelliğini kapatabiliyorsunuz.

Nightwalker dedi ki...

Bende öyle tahmin ediyorum zaten ama tam olarak nereden yapacağımı bulamadım. Bu sebepten dolayı böyle bir çözüm geliştirdim :)

Hüseyin Gömleksizoglu dedi ki...

Akşam evde bakarım. Bir rails projesi var, kendime yardimci ariyorum ilgilenir misin? Bana mail atarsan sevinirim.
huseyin et gomleksizoglu.com

necrodome dedi ki...

Çoğul Model <> Tablo ismi eşleşmesini, config klasoründeki environment.rb dosyasına ActiveRecord::Base.pluralize_table_names = false yazarak engelleyebilirsiniz.

Eğer sadece tek bir tablo eşleşmesini değiştirmek istiyorsanız model dosyasına set_table_name "tablo_adı" yazabilirsiniz. Sizin durumununuzda

class OgretimUye < AR::Base
set_table_name "ogretimuye"
end

bunu halledecektir.

Inflection, daha çok (railsin ingilizce temelli olması nedeniyle) çoğulu aynı olan modellerin eşlenmesi için. "money,news" vs gibi. Tabi istenilen yontem kullanılabilir ama DHH'ın dediği gibi, rails gelenekçi bir framework.