2017-10-18 40 views
0

我試圖讓所有transactionspostgresql db,transactionspairs表有一對一的關係。在pair表中,有一個名爲match的列,其類型爲json。我想選擇所有transactions,包括他們的pair,其pair.match計數大於1.在rails中的JSON對象大小包括

我試過pairs = Pair.where('json_array_length(match) > 1')哪個工作。

我如何獲得pair.match大於1的所有交易。試過這個 - >transactions = Transactions.includes(:pair).where(pairs: 'json_array_length(match) > 1'),但沒有奏效。

更新:這是TransactionTransactions

回答

1

您可以嘗試連接兩個表。假設你的模型是對和交易

transactions = Transaction.joins(:pair).where('json_array_length(match) > 1') 
+0

如果我有100萬次交易和100萬次交易,這會慢嗎? –

+1

我無法想象任何快捷方式。這是兩個表格之間的簡單連接。我同意Michael Chaney的觀點。您應該採納所有建議的更改以避免將來出現任何問題。 – geoandri

2

一對夫婦的意見:

  1. 的模式應該是「事務」(單數)
  2. 你真的是在和自己的傷害的世界通過命名它「交易」。這基本上是一個「保留字」。你不想使用它。您將與其他已存在稱爲「交易」或「交易」的方法發生衝突
  3. 與具有稱爲「匹配」的列相同。這是Ruby中一個非常常見的方法名稱。

我知道我沒有回答這個問題,但是這對於評論來說太多了,你需要在繼續之前解決這些問題。

+0

我輸入時犯了一個錯誤。它是'交易' –

+1

您應該避免在rails中使用更多「受保護」的詞語:https://stackoverflow.com/a/22287497 –

+0

@larrybuntus您不想使用「Transaction」,無論是單數還是複數。你會遇到奇怪的問題 - 只需更改該表/模型的名稱即可。 –