[英]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
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.