是否可以在控制器中调用范围?

时间:2013-01-20 23:43:24

标签: ruby-on-rails ruby-on-rails-3

我想在控制器中使用这个范围 我该如何添加到此行? 我不能把.recent放在任何地方...... 现在我可以忽略order: 'updated_at DESC' 我刚刚离开,以防万一。

用户控制器

@users = User.find_by_username(params[:id]).all_following(order: 'updated_at DESC')

用户模型

scope :recent, lambda { |n = 10| order("last_active_at DESC").limit(n) }

1 个答案:

答案 0 :(得分:2)

只需写下

@users = User.find_by_username(params[:id]).all_following.recent

在您的控制器中。这应该会给你最近的用户。范围的美妙之处在于您可以将它们连接起来(在本例中为all_followingrecent)。

顺便说一句,我怀疑找到一个带有id的用户名是有道理的。如果您在params哈希中有用户名,则需要说User.find(params[:id]).all_following.recentUser.find_by_username(params[:username]).all_following.recent