アプリはユーザーにイベントの提案を表示します。アクティブレコード:一連のオブジェクトの最初のオブジェクトを表示します(最適化)
- スタンリー・シアターは1
- スタンレー劇場プレゼンツ「フーバー」ナイトプレゼンツ「フーバー」ナイト:来ている1つの問題は、時には異なる日付で複数のイベントが、例えば、直列で、あるということです2
- スタンレーシアターが「フーバー」ナイトプレゼンツ3
私は何をしたいの最寄りの将来の開始日と直列にユーザーだけつのイベントを示しています。
私はイベントがシリーズの最初のものであるかどうかを確認する方法を記述することができます。
def first_in_series?
## return true unless self.siblings.count > 0 &&
self.siblings.where(:date => Date.today..self.date).first.present?
end
def siblings
## some method to get events based on the similarity of their titles and attributes
end
はその後、私のイベントインデックスに、私のような何かを書くことができます:
<% future_events.all.each do |e| %>
<% next unless event.first_in_series? %>
<%= event.title %>
<% end %>
をしかし、これはそうですすべてのイベントをレンダリングしているときには税金がかかるようです。アクティブレコードスコープを使用してこのクエリを最適化するにはどうすればよいですか?
私はここに –
で何の問題を把握することはできませんあなたがいつも 'first_in_series'(btw、メソッドは'? 'を持つべきではありません)を持っているときの' next'は、それが返されるブール値ではないからです。 –
@AndreyDeinekoはいくつかの編集を行いました。 'first_in_series'には常に1つあるとは限りません。いつself.siblings.where(:date => Date.today..self.date).first.present?偽を返します...それはイベントがそれ自身の日付の前に日付を持つ兄弟を持っていることを意味します –