Область применения Rails json field в отношении соединений - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть 2 модели

Form.rb

has_many :elements

Элемент

belongs_to :form

Я хочуТакие элементы запроса:

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

эти атрибуты относятся как к моделям форм, так и к элементам, и это прекрасно работает.Теперь мне нужно охватить формы еще одним атрибутом ( date ), который хранится в мета-атрибуте (поле json), поэтому объект Form выглядит следующим образом:

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

Я создал область, которая можетработать так:

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

, и это прекрасно работает, но как я могу использовать эту область в приведенном выше сценарии, так как я не могу сделать:

hash = {
      form: {
        name: "some name", 
        surname: "some surname",
        date: "2018-10-10"
      }, 
      element_name: "some name" 
    }
...