13.13. Programowe tworzenie zapytań

Problem

Trzeba napisać fragmenty kodu SQL, aby przekazać parametry do zapytania ActiveRecord. Chcemy całkowicie pozbyć się konieczności pisania kodu SQL i przedstawić parametry zapytania w postaci struktur danych języka Ruby.

Rozwiązanie

Oto proste rozwiązanie. Metoda ActiveRecord::Base.find_by_map robi to, czego nie można zrobić za pomocą metody find. Zwykle zapytanie jest reprezentowane przez fragment kodu SQL przekazany jako argument :conditions. W tym przypadku argument :conditions zawiera odwzorowanie nazw pól w bazie danych na określone wartości:

require 'receptury_dbconnect' class ActiveRecord::Base def self.find_by_map(id, args={}.freeze) sql = [] values = [] args[:conditions].each do |field, ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.