0
我將存儲「DONE」,「待定」數值,而「NUMBER_TYPE」,但我不知道如何使查詢子句,如何選擇在<code>status</code>列</p> <p>由where子句
scope :running, -> { where(" status <> HOW_TO_FILL ").order('created_at DESC') }
我將存儲「DONE」,「待定」數值,而「NUMBER_TYPE」,但我不知道如何使查詢子句,如何選擇在<code>status</code>列</p> <p>由where子句
scope :running, -> { where(" status <> HOW_TO_FILL ").order('created_at DESC') }
假設你可能的狀態是DONE
,PENDING
或字符串格式的數字,那的:running
狀態等同於數字而不是狀態DONE
或PENDING
之一,那麼下面應該工作:
scope :running, -> { where "status not in ('DONE', 'PENDING')" }
當然,如果您隨後引入了另一個非數字狀態,那麼將被視爲RUNNING
,除非您更新此範圍以包含新狀態。
另一種方式來解決這個問題是使用狀態RUNNING
,並簡單地選擇:
甚至更好,傳遞一個變量:
scope :with_status, ->(status) { where status: status.to_s.upcase }
由於我們稱之爲.to_s
和.upcase
的論點,你可以通過符號:done
或任何情況下的字符串(done
,Done
,DONE
),他們都會正常工作。 然後,您可以使用此範圍如下(我假設你的模式被稱爲Process
):
@running_processes = Process.with_status(:running)
然後,你可能要一個running_pid
屬性的過程中添加到模型中並存儲整數值在那裏跑步。
正在運行'1'和'20000'之間的數字嗎? – vee
你想在'1'和'20000'之間選擇'status'的任何記錄嗎? –
不是,這個號碼是'pid'。但我認爲在大多數情況下應該在1-20000之間 – newBike