Powiedzmy, że mam dwie pary takich warunków SQL:
a = [ "users.accepted = ? AND users.active_at > ?", true, Time.zone.now ]
b = [ "users.accepted = ? AND users.active_at > ?", false, Time.zone.now + 3.days ]
Mogę używać kodu podobnego do User.where(a)
aby uzyskać wszystkie wiersze, które spełniają a
stan. Jak mogę korzystać where
aby uzyskać wiersze, które spełniają oba a
lub b
warunki? Wynik powinien być ActiveRecord::Relation
.
Odpowiedzi:
2 dla odpowiedzi № 1Jest na to kilka sposobów.
otrzymać meta_where lub piszczy w zależności od wersji szyn. To naprawdę świetne klejnoty, które poprawiają zachowanie Arel w ActiveRecord :: Relation.
napisz sql ręcznie i przekaż go gdziemetoda jako ciąg. Być może będziesz musiał ręcznie wprowadzić bałagan w iniekcję sql, ale z powyższego przykładu nie widziałem żadnych przychodzących wartości, które byłyby łańcuchami wygenerowanymi przez użytkownika.