我有一个before_filter来设置一个arel关系,但是如果我在方法中先调用它就不喜欢它了。它似乎在控制台中工作正常。我在这里缺少什么?
class TeamsController < ApplicationController
before_filter :find_team
def show
@team.first
end
private
def find_team
@team = Team.where(:id => params[:id])
end
end
答案 0 :(得分:1)
where
方法返回关系,而不是对象。要获取对象,请使用first
方法从关系中返回对象(或nil
)。
def find_team
@team = Team.where(:id => params[:id]).first
end
first
方法不会更新关系 - 它会在关系上调用时返回一个对象。
答案 1 :(得分:0)
有一个错误,我不知道这是不是一个错字。
def TeamsController < ApplicationController
应该是
class TeamsController < ApplicationController
关于此问题,请记住您可以在单个记录而不是数组上迭代任务。 换句话说
@team = Team.where(:id => params[:id])
@team.first.tasks # => OK
@team.tasks # => Not OK, you're trying to call tasks on an Array
答案 2 :(得分:0)
您将调用的结果丢弃到first
。你想做类似的事情:
def show @team = @team.first end