在获取所有关联对象时,在多对多关系中包含连接表中的属性

时间:2017-02-08 14:56:54

标签: ruby-on-rails postgresql many-to-many ruby-on-rails-5 jointable

我有这种语言与用户的关系

class User < ApplicationRecord
    has_many :languages, through: :language_users
    has_many :language_users
end

class Language < ApplicationRecord
    has_many :users, through: :language_users
    has_many :language_users
end

class LanguageUser < ApplicationRecord
  belongs_to :language
  belongs_to :user
end

LanguageUser类的属性为 级别 。我想要的是获取一个用户的所有语言,其中包括example- User.first.languages提取的所有语言的level属性(来自LanguageUser类),它包含具有语言和级别的对象。

2 个答案:

答案 0 :(得分:0)

此查询可让您轻松获取

Disassembly of section .text:

00000000 <.text>:
   0:   2237fff1    addi    $23,$17,-15

然后循环遍历它并通过variable_name.level访问级别。

答案 1 :(得分:0)

如果要获取级别为非null的所有语言。

User.first.languages.where('language_users.level not NULL').select('languages.*,language_users.level')