Как выбрать все записи из одной таблицы и, если их идентификатор присутствует в другой, получить данные из таблицы 2? - PullRequest
0 голосов
/ 29 июня 2018

Я хочу получить массив всех игроков назад и тех, которые были добавлены в TeamSelections. Я хотел бы также получить их данные из этой таблицы. Как мне это сделать?

class CreatePlayers < ActiveRecord::Migration[5.1]   def change
    create_table :players do |t|
      t.belongs_to "club", index: true
      t.belongs_to "club_rl", index: true
      t.string "nickname"
      t.string "first_name"
      t.string "middle_names"
      t.string "last_name"
      t.date "dob"
      t.string "pob"
      t.string "position"
      t.integer "number"
      t.string "height"
      t.boolean "international", default: false
      t.string "national_team"
      t.timestamps
    end   end end

class CreateTeamSelections < ActiveRecord::Migration[5.1]
  def change
    create_table :team_selections do |t|
      t.belongs_to "season", index: true
      t.belongs_to "club", index: true
      t.belongs_to "player", index: true
      t.integer "fixture_week"
      t.integer "position", limit: 1
      t.timestamps
    end
  end
end

1 Ответ

0 голосов
/ 29 июня 2018

ActiveRecord включает должно сделать это для вас вполне прилично. Поскольку вы хотите перебрать все players и поставить позицию игрока, если он / она находится в team_selection.

(P.S. - Предполагается, что игрок has_many: team_selections, если его has_one, тогда используйте team_selection вместо team_selections)

Player.includes(:team_selections).each do |p|
  if p.team_selections.present?
    # insert their position in the HTML element
  end
end
...