Given 2 Stosunki ActiveRecord, które generują następujące SQL:Jak scalić (link) 2 Relacje na różnych tabel w szynach 4
- relacji
a = SELECT comments.* FROM comments INNER JOIN attachments ON attachments.comment_id = comments.id WHERE attachment.name ILIKE '%foo%
- relacja
b = SELECT attachments.* FROM attachments INNER JOIN users ON attachments.user_id = users.id WHERE users.other_conditions
ten pracował w Rails/ActiveRecord :
puts a.merge(b).to_sql # Rails 3
> "SELECT comments.* FROM comments INNER JOIN attachments ON attachments.comment_id = comments.id INNER JOIN users ON attachments.user_id = users.id WHERE attachment.name ILIKE '%foo% AND users.other_conditions"
Myślę, że zadziałało, ponieważ merge
ignorowało wszelkie nieistniejące skojarzenia w zapytaniach.
Ale Szyny jest znacznie bardziej pedantyczny i nie powiedzie się z:
puts a.merge(b).to_sql # Rails 4
> ActiveRecord::ConfigurationError: Association named 'user' was not found on Comment; perhaps you misspelled it?
Więc pytanie brzmi jak mogę dosłownie scalić 2 Stosunki bez poręczy jest zaniepokojony poprawności (moje specyfikacje wziąć za to odpowiedzialność)?
Sprawdź klejnot Arel, który jest używany wewnętrznie przez Rails - https://github.com/rails/arel i przykłady/specyfikacje tutaj https://github.com/rails/arel/tree/master/test możesz dostać trochę więcej wglądu. –
@OtoBrglez nie może tam znaleźć żadnych wskazówek. Czy masz jakieś? –