当前,我有两个表countries
和users
countries
的类似这样的模式,
对于users
表,
因此对于users/index.html.erb
,而不是显示我从国家/地区表ID中获得的born_at_id或live_at_id,我想显示该国家/地区的名称。
我已经尝试搜索有关此问题的大量文章,但对我而言都无效。
对于我的表,我是否需要在迁移用户表期间放置引用,或者仅使用has_one
,许多和else_to以及如何在索引中显示数据就足够了。
答案 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