2009-05-04 51 views
0

如何分组命名范围?例如,我有两个模型,用户和活动。用户可以有许多活动。如何在Rails中分组/重用命名范围?

活动有两个命名范围:

Activity.ordered_by_created_at 
Activity.top_20 

我想创建一个新的命名范围Activity.recent这样

Activity.recent == Activity.ordered_by_created_at.top_20 

这样的话,我可以叫user.activities最近。

user.activities.recent 

这可能吗?谢谢。

回答

0

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

可能要考虑更改Activtiy.recent.user(UID)的方法,只需在您的activity.rb文件中编写一个named_scope,以找到关联用户的活动。

+0

嗯......是的,Activity.find_by_user_id(user.id).recent可能是这样做的。谢谢。 – gsmendoza 2009-05-11 01:12:16

0

你或许可以这样做:

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

是的,这就是我所做的。但它不适用于`user.activities.recent` – gsmendoza 2009-05-05 02:44:12