Ruby on rails 在Rails中使用has_one关系和OR进行范围限定
我在设置一个作用域时遇到问题,该作用域将检查Ruby on rails 在Rails中使用has_one关系和OR进行范围限定,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我在设置一个作用域时遇到问题,该作用域将检查有一个
有一个
关系上的值。我有一个文档
模型。每个文档都有一个Document::Response
,并且Document::Response
有一个状态
字段(我用rails g model documents/Response
生成了Document::Response
模型,这使事情比我预期的要复杂一些。例如,强参数方法将其引用为:Document\u responses
。但不确定它是否相关。)
一旦我开始工作,我还需要检查其他东西:
scope :rejected, -> { joins(:response).where(status: 'rejected').or(status: 'owed' }
但我似乎无法正确理解这句话的语法
PG::UndefinedColumn: ERROR: column documents.status does not exist
LINE 1: ...ts"."id" WHERE "documents"."mortgage_id" = $1 AND "documents...
^
: SELECT COUNT(*) FROM "documents" INNER JOIN "document_responses" ON
"document_responses"."document_id" = "documents"."id" WHERE
"documents"."mortgage_id" = $1 AND "documents"."status" = $2
路线:
resources :mortgages, shallow: true do
resources :documents do
collection do
post :create_templates
end
end
member do
post :archive
end
end
resources :responses, controller: 'document/responses' do
member do
post :accept
post :reject
end
end
需要明确告诉AR使用响应
表中的状态
列,而不是文档
:
scope :rejected, -> {
joins(:response).where(responses: { status: 'rejected' })
}
scope :processed, -> {
joins(:response).where(responses: { status: ['rejected', 'owed'] })
}
你能告诉我们你发现了什么问题吗?我有一条错误消息吗?如果有,请编辑你的问题并添加它…或者你看到/尝试过的其他任何东西。Rails版本?
scope :rejected, -> {
joins(:response).where(responses: { status: 'rejected' })
}
scope :processed, -> {
joins(:response).where(responses: { status: ['rejected', 'owed'] })
}