【发布时间】:2017-08-27 16:00:30
【问题描述】:
我是 Web 开发和 Rails 的新手,我第一次尝试构建一个查询对象。我有一个 Players 表和一个 DefensiveStats 表,它有一个外键 player_id,所以这个表中的每一行都属于一个玩家。玩家有一个字段 api_player_number,这是我引用的第 3 方使用的 id。 DefensiveStats 对象有两个与此查询相关的字段——一个 season_number 整数和一个 week_number 整数。我想做的是构建一个带有 3 个参数的单个查询:一个 api_player_number、season_number 和 week_number,它应该返回具有相应季节和周数的 DefensiveStats 对象,该对象属于具有 api_player_number = 传入的玩家api_player_number。
这是我尝试过的:
class DefensiveStatsWeekInSeasonQuery
def initialize(season_number, week_number, api_player_number)
@season_number = season_number
@week_number = week_number
@api_player_number = api_player_number
end
# data method always returns an object or list of object, not a relation
def data
defensive_stats = Player.where(api_player_number: @api_player_number)
.joins(:defensive_stats)
.where(season_number:@season_number, week_number: @week_number)
if defensive_stats.nil?
defensive_stats = DefensiveStats.new
end
defensive_stats
end
结束
但是,这不起作用,因为它在 Player 类上执行第二个 where 子句,而不是 DefensiveStats 类 -> 具体来说,“SQLite3::SQLException: no such column: player.season_number”
如何构造这个查询?谢谢!!!
【问题讨论】:
标签: sql ruby-on-rails join where