0
私は多くのホテルを持つ国を持っていますが、どのようにホテルを持つすべての国を得ることができますか?私の外来キーモデルでカウントを使用するフィルタを意味する?レール3の外来キー数でフィルターする方法は?
はあなたに
私は多くのホテルを持つ国を持っていますが、どのようにホテルを持つすべての国を得ることができますか?私の外来キーモデルでカウントを使用するフィルタを意味する?レール3の外来キー数でフィルターする方法は?
はあなたに
# migration
class AddCounterCacheToCountries < ActiveRecord::Migration
add_column :countries, :hotel_count, :integer, :default => 0
end
# models
class Country
has_many :hotels
scope :with_hotels, where('hotel_count > 0')
end
class Hotel
belongs_to :country, :counter_cache => true
end
# controller
def index
@countries = Country.with_hotels.all
end
に感謝し、それはそれにそこにあるおよそすべてです。
カウンタキャッシュは最適なソリューションですか? – Sebastien
また、ジョインを使用すると、関連するホテルがない国は返されませんが、それはパフォーマンスが悪く、DBクエリを追加しないとホテルの数だけ国オブジェクトを照会できるという利便性がありません。 – coreyward
ありがとうございます – Sebastien