带有表连接的Ruby on Rails模型

时间:2018-01-17 12:56:19

标签: mysql ruby-on-rails ruby

在我的数据库中,我创建了三个表,分别是user,user_group,user_group_info 我想做这样的查询,但我不知道如何加入这两个表。

SELECT * FROM user AS u
INNER JOIN user_group AS ug ON u.user_group_id=ug.user_group_id
INNER JOIN user_group_info AS ugi ON ug.user_group_id=ugi.user_group_id
WHERE ugi.language_id = 1



用户模型

class User < ApplicationRecord
    self.table_name = "user"
    self.primary_key = "user_id"
    belongs_to :user_group
end

<小时/> 用户组模型

class UserGroup < ApplicationRecord
    self.table_name = "user_group"
    self.primary_key = "user_group_id"
    has_many :user
    belongs_to :user_group_info
end

<小时/> UserGroupInfo模型

class UserGroupInfo < ApplicationRecord
    self.table_name = "user_group_info"
    has_many :user_group
end

1 个答案:

答案 0 :(得分:0)

您可以使用ActiveRecord创建查询,而不是手动创建。试试这个:

User.joins(user_group: :user_group_info).where(user_group_infos: { language_id: 1 })

这应该转化为您在问题中作为示例查询提供的内容。

您从User开始,然后加入user_groups。通过user_groups,您加入user_group_infos。最后,在user_group_infos上添加条件。有几种方法可以写出来。

where("user_group_infos.language_id = ?", language_id)
# or
where(user_group_infos: { language_id: language_id })