Rails'teki Rails'i kullanma - SELECT * FROM table
'u etkin bir şekilde sonuçlandıran ve daha da fazla işlem yapabileceğim bir ActiveRecord::Relation
oluşturmak için bir yol arıyorum.Rails/Arel: Tüm kayıtları ActiveRecord :: Relation olarak seçme
Örneğin, birden çok kategoriye ayırdığımız oluyor bir model var ve aşağıdaki şekilde bunlar için sayıları dönmek: Bu iyi çalışır, ve COUNT
sorguları kapalı ateş avantajına sahiptir
relation = Model.where(:archived => false) # all non-archived records
record_counts = {
:total => relation.count,
:for_sale => relation.where(:for_sale => true).count
:on_auction => relation.where(:on_auction => true).count
}
MySQL, aslında kayıtları kendileri seçmek yerine.
Ancak, artık arşivlenmiş kayıtları sayımlara eklemem gerekiyor, ancak relation = Model.all
bir Array
sonuçlarıyla sonuçlanıyor ve ben bir ActiveRecord::Relation
arıyorum. Bunu yaparken düşünebilirsiniz
tek yolu çalışır, ama biraz saçma görünüyor model.where(model.arel_table[:id].not_eq(nil))
vardır.
Bu konuda herhangi bir ışık tutabilir mi?
Raylar 4.0.13 üzerinde, 'Model.all' Model.scoped' kaldırıldı' ilişki geri döner ve. – Tsutomu