在导轨中两个或两个以上模型之间的索引处显示数据

时间:2019-02-22 07:36:10

标签: ruby-on-rails ruby psql

当前,我有两个表countriesusers

countries的类似这样的模式,

  • id
  • 国家/地区代码
  • 名称

对于users表,

  • id
  • 名称
  • born_country_id
  • live_at_country_id

因此对于users/index.html.erb,而不是显示我从国家/地区表ID中获得的born_at_id或live_at_id,我想显示该国家/地区的名称。

我已经尝试搜索有关此问题的大量文章,但对我而言都无效。

对于我的表,我是否需要在迁移用户表期间放置引用,或者仅使用has_one,许多和else_to以及如何在索引中显示数据就足够了。

1 个答案:

答案 0 :(得分:2)

在模型中添加以下关联,

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