我希望这很简单,但实质上我想通过Rails 4中的连接表计算具有某些属性的用户数。
我有一个名为Views
的表格,其中包含三列:
t.references :viewer
t.references :viewed
t.boolean :sentmessage, default: false
然后我将字段引用为:
belongs_to :viewer, :class_name => "User"
belongs_to :viewed, :class_name => "User"
然后,每个用户记录与许多其他记录相关联,例如统计,问题和许多其他记录。我有兴趣有效地计算viewers
个viewed
个group
个记录是男性还是女性(和其他搜索字段),这些数据都是在User.stat.gender.name等中保存的。
我正在尝试使用@results = View.where(viewed: 63).group("viewer.stat.gender")
语句,但不知道如何向下钻取并计算男性等数量。我尝试过:
array(4) {
[0]=>
array(18) {
["ID"]=>
int(32)
["id"]=>
int(32)
["title"]=>
string(15) "President Image"
["filename"]=>
string(11) "3f666ad.jpg"
["url"]=>
string(63) "http://localhost/moderna/wp-content/uploads/2015/08/3f666ad.jpg"
["alt"]=>
string(15) "President Image"
["author"]=>
string(1) "1"
["description"]=>
string(0) ""
["caption"]=>
string(17) "This is a caption"
["name"]=>
string(7) "3f666ad"
["date"]=>
string(19) "2015-08-25 05:18:16"
["modified"]=>
string(19) "2015-08-31 14:05:45"
["mime_type"]=>
string(10) "image/jpeg"
["type"]=>
string(5) "image"
["icon"]=>
string(61) "http://localhost/moderna/wp-includes/images/media/default.png"
["width"]=>
int(200)
["height"]=>
int(200)
但这太可怕了,令人恐惧。
如果有任何帮助,我们将不胜感激。
答案 0 :(得分:0)
我终于解决了。对于其他感兴趣的人:
View.where(viewed_id: 63).joins(viewer: {stat: :gender}).group("name").count
没有意识到INNER JOIN是什么,但是一些研究和一些反复试验意味着我现在可以显示有关访问过的用户的信息。