私は2つのActiveRecordモデル - Residence
とApartment
を持っています。子供の特定の属性に従ってActiveRecordインスタンスを注文する
class Residence < ActiveRecord::Base
has_many :apartments
end
class Apartment < ActiveRecord::Base
belongs_to :residence
end
apartments
テーブルフィールドprice_from
(単価)とarea
を有しています。そのマンションの合計価格は、私はまた、私はこのスコープを呼んで昇順/降順に住居をソートすることができる午前住宅
def min_price_for_apartment
apartments.minimum("price_from*area")
end
ためのインスタンスメソッドを定義したprice_from
* area
です。
#scope: with_children, -> { where(published: true).includes(:apartments).joins(:apartments) }
scope: sort_by_unit_price_asc, -> { with_children.order('apartments.price_from') }
# scope: sort_by_unit_price_asc, ->{adding desc to the end of previous scope}
最低アパート価格で住居を分類するにはどうすればよいですか?
UPDATE:私は純粋なSQLを使用して解決策を見つけた、今
# select residences.name from residences inner join apartments on residences.id = apartments.residence_id group by (residences.id) order by min(apartments.price_from*apartments.area)
name
-----------
Lorem
Ipsum
Quod
Maritimus
Amet
(5 rows)
P.S.をArにそれを翻訳する必要があります私は他の関連する質問と答えを知っていますが、どれも私を助けませんでした。私はまた、フロントエンドベースのソリューションを実装することを認識しており、そのような値をdata-attributes
に渡して、それに従ってソートします。
答えに感謝しますが、私はすでにこれを試してみた、とこのようなエラーが 'PG :: GroupingErrorます:ERROR:コラム「apartments.idは」GROUP BY句に表示される必要がありますまたは集約function'で使用すること ps parathesisの後に一重引用符を入れる - )) p.p.s私の質問で更新するためのルックアップがあります。 – marmeladze