范围没有看到通过params

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了范围没有看到通过params相关的知识,希望对你有一定的参考价值。

我收到了这个错误

“错误的参数数量(给定0,预期1)”

但是,如果我在控制器或范围内运行pry,我可以看到params并且它们正在被传入。我已经到处搜索但是无法弄清楚为什么会发生这种情况。

调节器

def create
  if Conversation.between(params[:sender_id], params[:recipient_id]).present?
    @conversation = Conversation.between(params[:sender_id],
    params[:recipient_id]).first
  else
    @conversation = Conversation.create!(conversation_params)
  end
end

模型

scope :between, -> (sender_id, recipient_id) { where(sender_id: sender_id, recipient_id: recipient_id).or.where(sender_id: recipient_id, recipient_id: sender_id) }

就像我说的,如果我在任何一个地方撬,我都可以看到params在那里并且它们被传入。也许它与我的范围有关?

答案

你在使用Rails 5吗?如果你是,我认为你错过了or的争论。如果您将范围更改为此类型,它应该可以正常工作。你的第二个where子句应该是给or的论据。

scope :between, -> (sender_id, recipient_id) { where(sender_id: sender_id, recipient_id: recipient_id).or(where(sender_id: recipient_id, recipient_id: sender_id)) }

official documentation显示如下:

Client.where(locked: true).or(Client.where(orders_count: [1,3,5]))
另一答案

试试这个:

scope :between, ->(params) {where(sender_id: params[:sender_id], recipient_id: params[:recipient_id]).or.where(sender_id: params[:recipient_id], recipient_id: params[:sender_id])

然后你必须用它来调用它:

 Conversation.between( { sender_id: params[:sender_id], recipient_id: params[:recipient_id]).present?

以上是关于范围没有看到通过params的主要内容,如果未能解决你的问题,请参考以下文章

Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 错误的解决(代码片段

javascript常用代码片段

已解决在react+ts中 atnd 用 upload 组件报错Failed to execute ‘readAsArrayBuffer,param 1 is notof type Blob(代码片段

已解决在react+ts中 atnd 用 upload 组件报错Failed to execute ‘readAsArrayBuffer,param 1 is notof type Blob(代码片段

活动结果片段索引超出范围:0x20001

Cg入门19:Fragment shader - 片段级模型动态变色