我很难获得在带有 pg 数据库的 Rails 应用程序中工作的范围。在 groups_controller.rb 的显示页面中,我试图显示由 created_at 排序的两种不同类型的数据。第一个是加入群组的用户,第二个是确认参加该群组的任何活动的用户,结果可以像这样混合在一起
user joined group (7 minutes ago)
user confirmed attendance (10 minutes ago)
user joined group (15 minutes ago)
型号如下
组.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: '' })
}