У меня есть устаревшая база данных, которая содержит две разные таблицы (tbl_players и tbl_player_ratings), которые ссылаются друг на друга в общем столбце (player_key).
Моя проблема: В Rails3, когда я пытаюсь получить PlayersRatings, присоединенные к Players, возвращаются только столбцы из PlayerRatings. Однако, если я выполняю тот же SQL-запрос в командной строке mysql, возвращаются столбцы из обеих таблиц.
Для простоты я приведу лишь несколько столбцов из каждой таблицы.
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)
Возвращает одиночный рейтинг игрока без представленных полей игрока.
SQL, полученный с помощью указанной выше команды rails:
SELECT * FROM `tbl_player_ratings` INNER JOIN `tbl_players` ON `tbl_players`.`player_key` = `tbl_player_ratings`.`player_key` LIMIT 1
Когда я выполняю эту точную команду в командной строке mysql, возвращаются все столбцы в обеих таблицах.
Почему Rails и ActiveRecord не делают одно и то же (возвращают все столбцы в обеих таблицах)?