Rails覆盖子类中的关联

时间:2013-12-05 14:40:56

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 associations

我需要从User继承一个新类CountryUser,它们之间的区别是一个单一的关联

用户

class User < ActiveRecord::Base
  has_many :user_sites
  has_many :sites, through: :user_sites
  has_many :countries, through: :sites
end

CountryUser

class CountryUser < User
  has_many :user_countries
  has_many :countries, through: :user_countries
end

当我是一个CountryUser时,我通过user_countries表获取我的国家/如果我是普通用户,我通过我指定的网站获取我的国家/地区。

但问题是CountryUser.first.countries总是将关系显示为普通用户(通过网站)

是否可以覆盖子类中的关联?或者有更好的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

我假设您正在使用单表继承/ STI?

UserCountryUser具有不同的关联,因此将您的常见用户模型问题重新计入基本用户类User并创建两个子类SiteUser和{{1}如下:

CountryUser