如何在Rails中对命名范围进行分组/重用?

时间:2009-05-04 07:49:11

标签: ruby-on-rails

如何对命名范围进行分组?例如,我有两个模型,User和Activity。用户可以进行许多活动。

Activity有两个命名范围:

Activity.ordered_by_created_at
Activity.top_20

我想创建一个新的命名范围Activity.recent,以便

Activity.recent == Activity.ordered_by_created_at.top_20

这样,我可以在user.activities上调用最近的内容。

user.activities.recent

这可能吗?感谢。

2 个答案:

答案 0 :(得分:0)

您可以这样做:

class Activity < ActiveRecord::Base
  def self.recent
    ordered_by_created_at.top_20
  end
end

答案 1 :(得分:0)

当您调用user.activities时,假设您的user.rb文件中有has_many:activities关系,ActiveRecord将返回所有用户活动的数组。

可能要考虑将方法更改为Activtiy.recent.user(UID),并在activity.rb文件中编写一个named_scope,以查找具有该活动的关联用户。