pg データベースを使用する Rails アプリでスコープを動作させるのに苦労しています。groups_controller.rb の表示ページで、created_at 順に並べられた 2 つの異なるタイプのデータを表示しようとしています。1つ目はグループに参加したユーザー、2つ目はグループのいずれかのイベントへの参加を確認したユーザーで、このように結果が混在する可能性があります
user joined group (7 minutes ago)
user confirmed attendance (10 minutes ago)
user joined group (15 minutes ago)
モデルは次のとおりです
Group.rb
has_many :memberships
has_many :users, through: :memberships
has_many :events
ユーザー.rb
has_many :memberships
has_many :groups, through: :memberships
has_many :confirmations
has_many :events, through: :confirmations
イベント.rb
has_many :confirmations
has_many :users, through: :confirmations
groups_controller.rb の show アクションで、このような recent_activities アクションを作成し、Time.now を渡して、それを使用して過去 24 時間のすべての結果を取得します。
def show
@recent = Group.recent_activities(Time.now)
end
しかし、group.rb にメソッドを記述しようとすると、問題が発生しました。たとえば、この形式を使用すると
where( memberships: {created_at: ''}
過去 24 時間以内、または過去 7 日以内の計算方法がわかりませんでした。私がこれをやろうとしている方法には他にも問題があると確信しています。任意のヒント?私は人生でこれらのタイプのクエリをいくつかしか書いていないので、それらはすべて形が崩れています
Group.rb
scope :recent_activities, lambda {|time|
joins(:user, :membership, :confirmation, :event).
where( memberships: {created_at: ''},
confirmations: {created_at: '' })
}