仅显示库SQL Rails中的以下软件

时间:2018-06-04 22:52:34

标签: sql ruby-on-rails ruby-on-rails-5

我的第一个Ruby on Rails应用程序有点问题。

我有3个表(软件,用户和库),用户可以关注软件并在其库中查看其后续内容。但我想在他的图书馆中看到没有后续内容。

我没有问题看到以下但是当我想看到只有USER没有跟随的软件时,我不能这样做......

Software.left_outer_joins(:libraries).where(libraries: {software_id: nil})

此代码向我展示了所有未遵循的软件,但我需要BY USER提供此信息。

此节目遵循软件

@library_softwares = current_user.library_additions

使用index.html

<% if @library_softwares.exists? %>
...
<%end>
你知道吗?

抱歉我的英文 THX

编辑: 我想达到这个结果:

@library_softwares = current_user.library_additions

@software = Software.all

@result = @software - @library_softwares

1 个答案:

答案 0 :(得分:0)

我希望我已经理解了你想要的东西,将软件信息保存在变量中

    $websites = Website::select('name', 'id')->
        with(
            array(
                'validClickSums' => function( $query ) {
                    $query->where( 'user_id', '=', 2 );
                },
                'facebookSums' => function( $query ) {
                    $query->where( 'user_id', '=', 2 );
                },
                'googleSums' => function( $query ) {
                    $query->where( 'user_id', '=', 2 );
                },
                'yahooSums' => function( $query ) {
                    $query->where( 'user_id', '=', 2 );
                },
                'campaigns' => function( $query ) {
                    $query->where( 'user_id', '=', 2 )->with(
                        array(
                            'validClickSums' => function( $query ) {
                                $query->where( 'user_id', '=', 2 );
                            },
                            'facebookSums' => function( $query ) {
                                $query->where( 'user_id', '=', 2 );
                            },
                            'googleSums' => function( $query ) {
                                $query->where( 'user_id', '=', 2 );
                            },
                            'yahooSums' => function( $query ) {
                                $query->where( 'user_id', '=', 2 );
                            },
                            'traffic_source',
                            'groups' => function( $query ) {
                                $query->with(
                                    array(
                                        'validClickSums' => function( $query ) {
                                            $query->where( 'user_id', '=', 2 );
                                        },
                                        'facebookSums' => function( $query ) {
                                            $query->where( 'user_id', '=', 2 );
                                        },
                                        'googleSums' => function( $query ) {
                                            $query->where( 'user_id', '=', 2 );
                                        },
                                        'yahooSums' => function( $query ) {
                                            $query->where( 'user_id', '=', 2 );
                                        },
                                        'keywords' => function( $query ) {
                                            $query->with(
                                                array(
                                                    'validClickSums' => function( $query ) {
                                                        $query->where( 'user_id', '=', 2 );
                                                    },
                                                    'sourceSums' => function( $query ) {
                                                        $query->where( 'user_id', '=', 2 );
                                                    }
                                                )
                                            );
                                        }
                                    )
                                );
                            }
                        )
                    );
                }
            )
        )->get();

如果您在用户和软件之间有关系,只需通过@softwares数组

即可获得用户信息
@softwares = Software.left_outer_joins(:libraries).where(libraries: {software_id: nil})