CONCAT()
ve diğer SQL işlevleri içine ARel
yazma (sanitized, muhtemelen aliased, vb) sütun adları sahip bir yolu var mı?ARel'de CONCAT() vb. Gibi işlevleri nasıl kullanırım?
İşte
?> name = Arel::Attribute.new(Arel::Table.new(:countries), :name)
=> #<struct Arel::Attributes::Attribute [...]
?> population = Arel::Attribute.new(Arel::Table.new(:countries), :population)
=> #<struct Arel::Attributes::Attribute [...]
?> Country.select([name, population.average]).to_sql
=> "SELECT `countries`.`name`, AVG(`countries`.`population`) AS avg_id FROM `countries`"
Ben farklı bir işlevi isteseydi Peki
(evet, sadece sorumu göstermek için çalışıyor, avg_id
her satırda aynı olacağını biliyorum) ... how to do it with AVG() var ?
?> Country.select(xyz).to_sql # Arel::Concat.new(name, population) or something?
=> "SELECT CONCAT(`countries`.`name`, ' ', `countries`.`population`) AS concat_id FROM `countries`"
Teşekkürler!
devamı lit' 'literal SQL' anlamına gelen "..." 'olarak sütunlarını seçerek yerine bu gibi durumlar için bir dize olarak yorumlanır olmanın bir yolu vardır. SQL kaçışını devre dışı bırakır, böylece ne istersen enjekte edebilirsin. AREL eşdeğerinin ne olduğundan emin değiliz, ama belki de bu bir fikir. – tadman
Burada kendime biraz daha ayrıntılı yazı yazdım –