我有一个旧数据库,其中包含两个不同的表(tbl_players 和 tbl_player_ratings),它们在公共列(player_key)上相互链接。
我的问题:使用 Rails3,当我尝试检索加入 Players 的 PlayersRatings 时,只返回来自 PlayerRatings 的列。但是,如果我在 mysql 命令行中执行相同的 SQL 查询,则会返回两个表中的列。
为简单起见,我在此仅提供每个表中的几列。
tbl_players
player_key, last_name
tbl_player_ratings
player_key, rating
代表这些表的 Rails 类如下所示:
class PlayerRating < ActiveRecord::Base
establish_connection :legacy
set_table_name 'tbl_player_ratings'
set_primary_key "player_key"
belongs_to :player,
:foreign_key => 'player_key'
end
class Player < ActiveRecord::Base
establish_connection :legacy
set_table_name 'tbl_players'
set_primary_key "player_key"
has_many :player_ratings,
:foreign_key => 'player_key'
end
我在 rails 控制台中运行的查询:
PlayerRating.joins(:player).select("*").limit(1)
这将返回一个没有任何 Player 字段的唯一 PlayerRating。
上述 rails 命令产生的 SQL:
SELECT * FROM `tbl_player_ratings` INNER JOIN `tbl_players` ON `tbl_players`.`player_key` = `tbl_player_ratings`.`player_key` LIMIT 1
当我在 mysql 命令行中执行该确切命令时,两个表中的所有列都会返回。
为什么 Rails 和 ActiveRecord 不一样(返回两个表中的所有列)?