Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails与排除某些ID连接_Ruby On Rails_Ruby_Postgresql_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails与排除某些ID连接

Ruby on rails Rails与排除某些ID连接,ruby-on-rails,ruby,postgresql,ruby-on-rails-4,Ruby On Rails,Ruby,Postgresql,Ruby On Rails 4,我有一个查询,它根据id的数组 User.joins(:memberships). where(plan_memberships: { user_id: attendee_ids, plan_id: plan.id }) 现在我想做另一个调用,排除attendee\u id,然后使用上面的结果进行concat,以保留attendee\u id结果的顺序,然后是其他结果 是否有一种方法可以先保留基于特定ID的结果顺序,然后显示其余结果?您可以尝试注入一些SQL来覆盖排除情况 User.

我有一个查询,它根据
id的数组

User.joins(:memberships).
     where(plan_memberships: { user_id: attendee_ids, plan_id: plan.id })
现在我想做另一个调用,排除
attendee\u id
,然后使用上面的结果进行concat,以保留
attendee\u id
结果的顺序,然后是其他结果


是否有一种方法可以先保留基于特定ID的结果顺序,然后显示其余结果?

您可以尝试注入一些SQL来覆盖排除情况

User.joins(:memberships).
     where(plan_memberships: { user_id: attendee_ids, plan_id: plan.id }).
     where('plan_memberships.user_id not in (?)', banned_user_ids)

注意:根据您对数据库的选择,这可能会有所不同。您可以尝试注入一些SQL来覆盖排除情况

User.joins(:memberships).
     where(plan_memberships: { user_id: attendee_ids, plan_id: plan.id }).
     where('plan_memberships.user_id not in (?)', banned_user_ids)

注意:根据您对数据库的选择,这可能会有所不同。您可以尝试注入一些SQL来覆盖排除情况

User.joins(:memberships).
     where(plan_memberships: { user_id: attendee_ids, plan_id: plan.id }).
     where('plan_memberships.user_id not in (?)', banned_user_ids)

注意:根据您对数据库的选择,这可能会有所不同。您可以尝试注入一些SQL来覆盖排除情况

User.joins(:memberships).
     where(plan_memberships: { user_id: attendee_ids, plan_id: plan.id }).
     where('plan_memberships.user_id not in (?)', banned_user_ids)

注意:根据您对数据库的选择,这可能会有所不同。我认为在您的情况下,最好的方法是通过两个db查询分别检索结果

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })

excluded = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded = common_scope.where(plan_memberships: { user_id: attendee_ids })

all_sorted = excluded + encluded
对附加问题的回答:

如果要检索一定数量的记录,可以通过以下方式执行:

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })
excluded_scope = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded_scope = common_scope.where(plan_memberships: { user_id: attendee_ids })

number = 3

excluded = excluded_scope.limit(number)
size = excluded.size

if size < number
  encluded = encluded_scope.limit(number - size)
  all_sorted = excluded + encluded
else
  all_sorted = excluded
end
common\u scope=User.joins(:成员身份)。其中(计划成员身份:{plan\u id:plan.id})
excluded_scope=公共_scope.where.not(计划成员身份:{user_id:attendee_id})
encluded_scope=公共_scope.where(计划成员身份:{user_id:attendee_id})
数字=3
排除=排除范围限制(数量)
大小=已排除。大小
如果大小<数字
封闭=封闭范围限制(数量-大小)
所有已排序=已排除+已排除
其他的
所有已排序=已排除
结束

我认为在您的情况下,最好的方法是通过两个db查询分别检索结果

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })

excluded = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded = common_scope.where(plan_memberships: { user_id: attendee_ids })

all_sorted = excluded + encluded
对附加问题的回答:

如果要检索一定数量的记录,可以通过以下方式执行:

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })
excluded_scope = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded_scope = common_scope.where(plan_memberships: { user_id: attendee_ids })

number = 3

excluded = excluded_scope.limit(number)
size = excluded.size

if size < number
  encluded = encluded_scope.limit(number - size)
  all_sorted = excluded + encluded
else
  all_sorted = excluded
end
common\u scope=User.joins(:成员身份)。其中(计划成员身份:{plan\u id:plan.id})
excluded_scope=公共_scope.where.not(计划成员身份:{user_id:attendee_id})
encluded_scope=公共_scope.where(计划成员身份:{user_id:attendee_id})
数字=3
排除=排除范围限制(数量)
大小=已排除。大小
如果大小<数字
封闭=封闭范围限制(数量-大小)
所有已排序=已排除+已排除
其他的
所有已排序=已排除
结束

我认为在您的情况下,最好的方法是通过两个db查询分别检索结果

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })

excluded = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded = common_scope.where(plan_memberships: { user_id: attendee_ids })

all_sorted = excluded + encluded
对附加问题的回答:

如果要检索一定数量的记录,可以通过以下方式执行:

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })
excluded_scope = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded_scope = common_scope.where(plan_memberships: { user_id: attendee_ids })

number = 3

excluded = excluded_scope.limit(number)
size = excluded.size

if size < number
  encluded = encluded_scope.limit(number - size)
  all_sorted = excluded + encluded
else
  all_sorted = excluded
end
common\u scope=User.joins(:成员身份)。其中(计划成员身份:{plan\u id:plan.id})
excluded_scope=公共_scope.where.not(计划成员身份:{user_id:attendee_id})
encluded_scope=公共_scope.where(计划成员身份:{user_id:attendee_id})
数字=3
排除=排除范围限制(数量)
大小=已排除。大小
如果大小<数字
封闭=封闭范围限制(数量-大小)
所有已排序=已排除+已排除
其他的
所有已排序=已排除
结束

我认为在您的情况下,最好的方法是通过两个db查询分别检索结果

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })

excluded = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded = common_scope.where(plan_memberships: { user_id: attendee_ids })

all_sorted = excluded + encluded
对附加问题的回答:

如果要检索一定数量的记录,可以通过以下方式执行:

common_scope = User.joins(:memberships).where(plan_memberships: { plan_id: plan.id })
excluded_scope = common_scope.where.not(plan_memberships: { user_id: attendee_ids })
encluded_scope = common_scope.where(plan_memberships: { user_id: attendee_ids })

number = 3

excluded = excluded_scope.limit(number)
size = excluded.size

if size < number
  encluded = encluded_scope.limit(number - size)
  all_sorted = excluded + encluded
else
  all_sorted = excluded
end
common\u scope=User.joins(:成员身份)。其中(计划成员身份:{plan\u id:plan.id})
excluded_scope=公共_scope.where.not(计划成员身份:{user_id:attendee_id})
encluded_scope=公共_scope.where(计划成员身份:{user_id:attendee_id})
数字=3
排除=排除范围限制(数量)
大小=已排除。大小
如果大小<数字
封闭=封闭范围限制(数量-大小)
所有已排序=已排除+已排除
其他的
所有已排序=已排除
结束

如果您使用的是MySql,则可以根据数组中的ID保留顺序

field(user_id, [array of ids])

有关更多详细信息,您可以在此处查看

如果您使用的是MySql,则可以根据数组中的ID保留顺序

field(user_id, [array of ids])

有关更多详细信息,您可以在此处查看

如果您使用的是MySql,则可以根据数组中的ID保留顺序

field(user_id, [array of ids])

有关更多详细信息,您可以在此处查看

如果您使用的是MySql,则可以根据数组中的ID保留顺序

field(user_id, [array of ids])

有关更多详细信息,您可以在这里查看什么是
计划成员资格
?我猜:计划成员资格与:成员资格同义,这张票看起来可能有输入错误。是的@AJFaraday是对的:)为了便于使用,刚刚将其重命名为
会员身份
计划会员身份是什么?我想:计划会员身份是:会员身份的同义词,这张票看起来可能有输入错误。是的@AJFaraday是对的:)为了便于使用,刚刚将其重命名为
会员身份
计划会员身份是什么?我想:计划会员身份是:会员身份的同义词,这张票看起来可能有输入错误。是的@AJFaraday是对的:)为了便于使用,刚刚将其重命名为
会员身份
计划会员身份是什么?我想:计划会员身份是:会员身份的同义词,这张票看起来可能有输入错误。是的@AJFaraday是对的:)为了方便使用,刚刚将其重命名为
会员身份。可以这样做:)有没有一种方法可以在任何情况下添加超过3条记录的限制?哦,好的。可以这样做:)有没有一种方法可以在任何情况下添加超过3条记录的限制?哦,好的。可以这样做:)有没有一种方法可以在任何情况下添加超过3条记录的限制?哦,好的。可以这样做:)有没有办法在任何情况下添加3条记录的总限制?