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.