我知道有一些方法可以加入/包含表格,但在这里我想通过使用ActiveRecord.find_by_sql从2个表中检索数据。
实施例) 有2个表。
Table1: User{
id: Integer
name: String
}
Table2: UserComment{
id: Integer
user_id: Integer
comment: String
}
现在我想要ActiveRecord检索的是
select u.name, count(uc.comment) from User u, UserComment uc where u.id = uc.user_id group by u.name
我们如何用ActiveRecode写这个?以下只返回u.name :(
User.find_by_sql(<<-SQL)
select u.name, count(uc.comment) from User u, UserComment uc where u.id = uc.user_id group by u.name
SQL
一种可能的方法是使用Base.connection.execute直接运行SQL?嗯,但它看起来并不酷。
sql = 'select u.name, count(uc.comment) from User u, UserComment uc where u.id = uc.user_id group by u.name' ActiveRecord::Base.connection.execute(sql)
答案 0 :(得分:2)
如果您的has_many :user_comments
模型中定义了User
关联,这应该有效:
User.joins(:user_comments).group(:name).count