Rails 4关于#first with finder选项已弃用 - 同时使用#where

时间:2013-04-28 12:13:03

标签: activerecord deprecated ruby-on-rails-4

我的控制器中有这个代码:

def index
  @purchases = Purchase.all
  @purchases = @purchases.where(user_id: current_user.id) unless current_user.admin
  @purchases = @purchases.paginate(per_page: 30, page: params[:page])
end

导致以下弃用警告:

DEPRECATION WARNING: Relation#first with finder options is deprecated. Please build a scope and then call #first on it instead.

我真的不明白为什么,因为我不在任何地方使用#first。我还应该指出问题肯定在#index操作中的第二行 - 注释掉它会删除弃用。

1 个答案:

答案 0 :(得分:4)

这是设计。显然,方法#current_user使用了不推荐的AR查询。使用'rails4'分支。