Ruby on rails 连接两个活动记录结果(通过联接表)以返回新结果

Ruby on rails 连接两个活动记录结果(通过联接表)以返回新结果,ruby-on-rails,activerecord,model,Ruby On Rails,Activerecord,Model,我有以下资料: Account --> Options Account --> Profiles --> Options 这些是模型 # models/account.rb class Account < ActiveRecord::Base has_many :accounts_has_options has_many :options, :through => :accounts_has_options has_many :accounts_has

我有以下资料:

Account --> Options
Account --> Profiles --> Options
这些是模型

# models/account.rb
class Account < ActiveRecord::Base
  has_many :accounts_has_options
  has_many :options, :through => :accounts_has_options
  has_many :accounts_has_profiles
  has_many :profiles, :through => :accounts_has_profiles
end

# models/profile.rb
class Profile < ActiveRecord::Base
  has_many :profiles_has_options
  has_many :options, :through => :profiles_has_options
  has_many :accounts_has_options
  has_many :accounts, :through => :account_has_options
end

# models/option.rb
class Option < ActiveRecord::Base
  has_many :accounts_has_options
  has_many :accounts, :through => :accounts_has_options
  has_many :profiles_has_options
  has_many :profiles, :through => :profiles_has_options
end
#models/account.rb
类帐户:帐户有多个选项
有多个:帐户有多个配置文件
拥有\u多个:配置文件,:通过=>:帐户\u拥有\u配置文件
结束
#models/profile.rb
类配置文件:配置文件有多个选项
有多个:帐户有多个选项
有多个:帐户,:至=>:帐户有多个选项
结束
#models/option.rb
类选项:帐户\u有\u选项
有多个:配置文件有多个选项
有\u多个:配置文件,:至=>:配置文件\u有\u选项
结束
我希望所有选项都与帐户关联,所有选项都通过配置文件关联,可能在虚拟属性中

我在这个问题上找到了一个例子: 但是他们只有两个模型,在我的例子中,我们在故事中有一个连接表


您知道如何编写这样的虚拟属性吗?

将这样的方法添加到您的帐户模型中如何

def all_options
    profile_option_ids = []
    self.profiles.map{|p| profile_option_ids = profile_option_ids + p.options.pluck("options.id")}
    Option.where("id IN (?) or id IN (?)", self.options, profile_option_ids)
end
所以你只要打个电话就行了

account.all_options

你试过那个问题所暗示的吗?我看不出有什么特别的原因使它不起作用。