2010-08-28 26 views
7

Rails uygulamasında çoklu özellikli arama formu mantığı koymak için "en iyi" yeri bulmaya çalışıyorum. Söz konusu arama formunda, değerlere sahip olabilen veya bulunmayan birkaç özellik vardır ve veri türleri, özellikler arasında farklılık gösterir. (Örneğin, iki sayı, tarih aralığı, dize değerleri, vb. Arasında bir fiyat özniteliği olan öğeleri aramak için arama seçenekleri vardır.) Ayrıca, söz konusu modelin has_a/has_many ilişkileri aracılığıyla birkaç iç içe özniteliği ve bu özniteliklerin bazıları da vardır. aranabilir olmalı.Rails uygulamasında model arama mantığı nereye yerleştirilir?

Kalın modelin Rails mantrası, ince denetleyici, arama mantığını denetleyiciye birleştirmeyi denemekten çekiniyor. Bununla birlikte, model (ler) de arama koşullarının oluşturulmasına ilişkin mantığı koymak da uygun görünmemektedir. Son olarak, DRY'nin ruhuyla, bir takım özel özellik isimlerini bir takım modüllere kodlamakta tereddüt ediyorum; çünkü ilgisiz birkaç modele benzer arama mantığını uygulamanız gerekecek. Belki de arama alanlarındaki form alanlarının adlandırma kuralı doğru koşulları oluşturmak için kullanılabilir mi? ("Min_", "max_", "startdate_" gibi öneklerin, veri tipini ve arama koşulu operatörünü ve soneki model ve/veya öznitelik ismini belirten önekleri kullanması gibi bir şey var mı?)

Tavsiye arandı bununla birlikte, tavsiyelerin çoğu esnek olmayan (sabit kodlu öznitelik isimleri, iç içe öznitelikler için destek yok) ya da ihtiyacım için çalışacağımı düşünmüyorum rota tabanlı aramalar kullanmak (5-10 parametrelerin bir kerede arayın).

Bunu yapmanın "Raylar yolu" ile ilgili herhangi bir öneriniz var mı?

+1

Harika bir soru. İlginç Raylar bu gibi soruları burada SO üzerinde çok fazla dikkat çekecek. Ama farkedilseler, bazı harika cevaplar alabilirsiniz. Benim soruma burada aslında (biraz) ile ilgili http://stackoverflow.com/questions/1068558 göz atın. BTW, öznitelik adlarını kullanma fikriniz kötü değil ve yapmak için bir Railsy şey gibi görünüyor. –

+1

Yar, bağlantı için teşekkürler. Benim için yorumunuz bana kesinlikle faydalı - Ben de nasıl yapılacağını anladığımda nihayetinde arama mantığını nereye koyacağımı düşünmekteydim. Sorumu gönderdikten sonra, Rails arama ile ilgili bir sunuma da rastladım: http://www.scribd.com/doc/3188387/Advanced-Searching-in-Rails. Burada ortaya koyulan yaklaşımların, Dave'in önerisinin ve MVC paradigmasına tam olarak uymayan kod düzenleme tavsiyelerinizin bir araya getirilmesinin çözümümün temelini oluşturacağını düşünüyorum. Teşekkürler! –

+0

Elbette, @Chris Hart ve iyi şanslar. –

cevap

1

2.3.x kullanıyorsanız, tam metin aramaya ihtiyacınız olmayan ActiveRecord modellerini aramak için her zaman Searchlogic'un sağlam ve esnek bir başlangıç ​​noktası olduğunu gördüm. Dernekler, kendi adlandırılmış kapsamları, vb. Destekler.

Rails 3 kullanıyorsanız, meta_search gem benzer işlevler sunuyor gibi görünüyor, ancak bu konuda sahip olduğum deneyim çok sınırlıdır.

+1

Bunun, hangi gemin içeri girebileceğiyle ilgili bir soru olduğuna inanmıyorum. Bir ray uygulamasında kendi kodunuzu nasıl düzenleyeceğinizle alakalı bir soruydu. – npiv

İlgili konular