高级活动记录查询,或使用will_paginate与数组的方法

时间:2015-08-29 23:08:23

标签: sql ruby-on-rails ruby rails-activerecord will-paginate

我需要在项目的一部分上使用will_paginate gem,但据我所知,它只能直接在数据库对象上运行。但是我无法弄清楚这一个ActiveRecord对我的生活。

我有三张桌子:

    function GetAdministratorsInformation() {
    $.ajax({
        type: "GET",
        url: AddURLParam.AddGetAdminInformationURL,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data, textStatus, jqXHR) {
            GetAdministratorData(data);
        }
    })
}

用户可以对众多电影进行投票,并且可以上传自己的电影。我需要返回当前用户投票的独特电影标题。同样重要的是要注意用户可以多次对同一部电影进行投票。

我可以直接红宝石做到没问题:

function GetAdministratorData(admindata) { administratorName = admindata.administratorName, dateCreated = admindata.dateCreated, createdBy = admindata.createdBy }

但ActiveRecord是一个谜。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

假设每个用户只能对一次给定的电影进行一次投票..那么既然你有了关联,我就会得到用户,用户投票并加入电影。

current_user.votes.joins(:movie).paginate(:page => params[:page])

这将提供一个可以使用will_paginate方法的活动记录关系..

current_user.movies.joins(:votes).uniq

修改

因为在您的情况下,用户可以多次投票,所以反向查询更容易,并将投票加入user.movi​​es并调用uniq。像这样:

overflow:hidden;