ActiveRecord:基于关联列的平均值的订单表

时间:2017-04-01 21:27:11

标签: sql ruby-on-rails ruby activerecord

我正在为求职者建立一个系统来跟踪他们对使用Rails感兴趣的工作。我想根据用户对公司的兴趣程度对公司进行排名,这是通过平均公司发布的每个职位中用户声明的“兴趣水平”来确定的。因此,例如,沃尔玛可能会发布3个工作岗位,并且用户将提交他们对这些工作的兴趣水平,我们通过平均这3个兴趣水平来计算沃尔玛的整体利益。将有几家公司有几个工作岗位。

我的数据库有两个表:公司和工作,公司有很多工作,一个工作有一个公司。作业还具有“level_of_interest”属性,该属性应用于计算用户对公司的整体兴趣。

有没有办法只使用ActiveRecord方法?我目前的解决方案是:

Job.group('company_id').average(:level_of_interest)

然后使用Ruby将公司从生成的哈希中拉出来,但我认为可能有一种纯粹使用ActiveRecord的方法。

DB是PG,fwiw。

1 个答案:

答案 0 :(得分:3)

这样的事情应该有效:

<Main class_id="0" tracking_level="0" version="0">
    <etoto class_id="1" tracking_level="0" version="0">
        <count>2</count>
        <item_version>0</item_version>
        <group_item class_id="2" tracking_level="0" version="0">
            <assetid>1</assetid>
            <assetdata class_id="3" tracking_level="0" version="0">
                <name>dummy</name>
                <sex>dummy</sex>
            </assetdata>
        </group_item>
        <group_item>
            <assetid>2</assetid>
            <assetdata>
                <name>dummy</name>
                <sex>dummy</sex>
            </assetdata>
        </group_item>
    </etoto>
    <ptoto class_id="4" tracking_level="0" version="0">
        <count>2</count>
        <item_version>0</item_version>
        <Pgroup_item class_id="5" tracking_level="0" version="0">
            <hacc_groupid>1</hacc_groupid>
            <hacc_groupdata>
                <count>2</count>
                <item_version>0</item_version>
                <group_item>
                    <assetid>1</assetid>
                    <assetdata>
                        <name>dummy</name>
                        <sex>dummy</sex>
                    </assetdata>
                </group_item>
                <group_item>
                    <assetid>2</assetid>
                    <assetdata>
                        <name>dummy</name>
                        <sex>dummy</sex>
                    </assetdata>
                </group_item>
            </hacc_groupdata>
        </Pgroup_item>
        <Pgroup_item>
            <hacc_groupid>2</hacc_groupid>
            <hacc_groupdata>
                <count>2</count>
                <item_version>0</item_version>
                <group_item>
                    <assetid>1</assetid>
                    <assetdata>
                        <name>dummy</name>
                        <sex>dummy</sex>
                    </assetdata>
                </group_item>
                <group_item>
                    <assetid>2</assetid>
                    <assetdata>
                        <name>dummy</name>
                        <sex>dummy</sex>
                    </assetdata>
                </group_item>
            </hacc_groupdata>
        </Pgroup_item>
    </ptoto>
</Main>