繁体   English   中英

带有表连接的Ruby on Rails模型

[英]Ruby on Rails Model with table join

在数据库中,我创建了三个表,分别是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 

您可以使用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 })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM