2009-08-03 15 views
6

Bazı eklemeler eklediğinizde her türlü soruna neden olan "select *" için varsayılan seçim gibi görünüyor. En azından, nesnelerinizdeki yanlış kimliklerle sonuçlanırsınız (çünkü birden fazla "id" sütunu döndürülecektir).Çok fazla sütun seçmeye devam edin

.select("people.*") 

gibi bir şey yapmak çalışmıyor gibi görünüyor, ama bu bir sütun olarak geçirilen dize davranır ve onu tırnak ederim. Şimdiye kadar bunu çözmek için çıplak SQL'e geri dönmek zorunda kaldım, ama daha iyi bir yol olması gerektiğini biliyorum.

cevap

5

Sequel'in varsayılan davranışı tüm sütunları seçmek, ancak geçersiz kılmayı kolaylaştırmaktır. Tek bir tablodan yalnızca tüm sütunları seçmek isterseniz:

.select(:people.*)

Değişmez bir SQL dizesi kullanmak istiyorsanız:

.select('people.*'.lit)

+6

Bu sözdizimi olarak, benim için çalışmıyor 4.10. ': insanlar. *' undefined metodunu * şikayet ediyor: * insanlar: Symbol' ve '' people. * '.' 'yanılmamış' metodunu aydınlatır '' insanlar. * ': String'. ': 'insanlar.' 'sadece" insanlar "için arama yapar. '.select_all (: people) 'hile yapar. – womble

+0

'select_all' ayrıca birden çok tabloyu kabul eder. Bir çift tablodaki tüm sütunları ve üçüncü bir tablodaki belirli bir sütunu istiyorsanız, 'select_all (: tbl1,: tbl2) .select_more (: tbl3__col)' – Kelvin

+2

''people. *'. '' Li' artık' Sequel'i kullanın. lit ('insanlar. *') ' – Kelvin