Ruby-on-Rails, где пункт с родительским полем - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть базовая модель данных с отношениями родитель-потомок между Import и ProductLicenseData, определенная как:

class Import < ActiveRecord::Base
  has_many :product_license_data, class: ProductLicenseData, dependent: :destroy

  att_reader :extract_at
end

class ProductLicenseData < ActiveRecord::Base
  belongs_to :import

end

Я хочу написать метод в ProductLicenseData, который будет возвращать все «активные» записи, где «активный» определяется как запись, где «expirationDate» (поле в таблице базы данных, представленной моделью) больше, чем «извлеченный_каталог» импорта msgstr "значение (поле в таблице базы данных, которую представляет модель). Таким образом, у меня есть что-то вроде

def self.active
  where("\"expirationDate\" > #{import.extracted_at}")

end

Но это не работает. Я также попробовал:

def self.active
  ProductLicenseData.joins(:import).where("expirationDate > ?", import.extracted_at)
end

И почти каждый вариант, который я могу придумать. Большинство в конечном итоге говорит мне, что не знает, что такое import, или extract_at. Это кажется чем-то простым, но я в растерянности. Как мне написать это?

1 Ответ

0 голосов
/ 28 апреля 2018

Оказывается, это .joins(:import).where('"expirationDate" > imports.extracted_at'), с дополнительными кавычками из-за насекомого в PostgreSQL ...

...