Отображать данные по индексу между двумя или более моделями в рельсах - PullRequest
0 голосов
/ 22 февраля 2019

В настоящее время у меня есть две таблицы countries и users

схема для countries как-то так,

  • id
  • код страны
  • имя

и для users таблицы

  • id
  • имя
  • born_country_id
  • live_at_country_id

так что для users/index.html.erb вместо того, чтобы показывать born_at_id или live_at_id, которые я получил из идентификатора таблицы стран, я хочу показать название этой страны.

У меня есть попытка ипоиск довольно много статей по этому вопросу, но ни одна из них не работает для меня.

Для моей таблицы мне нужно помещать ссылки во время миграции для таблицы пользователей, или это достаточно просто с помощью has_one, many и assign_to икак отобразить данные в индексе.

1 Ответ

0 голосов
/ 22 февраля 2019

Добавьте следующие ассоциации в ваших моделях,

user.rb

class User < ActiveRecord::Base
  belongs_to :born_country, foreign_key: :born_country_id, class_name: 'Country'
  belongs_to :live_at_country, foreign_key: :live_at_country_id, class_name: 'Country'

  delegate :name, to: :born_country, prefix: true
  delegate :name, to: :lived_at_country, prefix: true 
end

country.rb

class Country < ActiveRecord::Base
  has_many :born_users, foreign_key: :born_country_id, class_name: 'User' 
  has_many :live_at_users, foreign_key: :live_at_country_id, class_name: 'User'
end

Вы можете проверить это ниже,

@users = User.includes(:born_country, :lived_at_country).each do |user|
  puts user.born_at_country_name
  puts user.lived_at_country_name
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...