连接关系上的Rails作用域JSON字段

时间:2018-12-11 20:30:32

标签: ruby-on-rails json rails-activerecord

我有2个模型

Form.rb

            For Each row As DataRow In ds.Tables(0).Rows
                Dim Teacher As String = row("Teacher").ToString()

                If Not dsOutput.Tables.Contains(Teacher) Then
                    Dim dvStudents = ds.Tables(0).DefaultView
                    dvStudents.RowFilter = "Teacher = '" & Teacher & "'"
                    Dim subTable As New DataTable(Teacher)
                    subTable = dvStudents.ToTable(Teacher)
                    dsOutput.Tables.Add(subTable)
                End If
            Next

元素

has_many :elements

我要查询这样的元素:

belongs_to :form

这些属性都来自Form和Element模型,并且可以正常工作。现在,我需要对具有1个以上属性( date )的Forms进行范围划分,该属性存储在meta属性(json字段)中,因此Form对象看起来像:

Element.joins(:form).where(hash)
hash = {
  form: {
    name: "some name", 
    surname: "some surname"
  }, 
  element_name: "some name" 
}

我创建了可以像这样工作的范围:

Form
  - name
  - surname
  - meta: {date: "2018-10-10"}

,这很好用,但是由于我做不到,我该如何在上述情况下使用此范围:

scope :by_date, ->(date) { where('JSON_EXTRACT(meta, "$.date") = ?', date) }
Form.by_date("2018-10-10")

0 个答案:

没有答案