Как я могу написать :has_many
связь с предложением where, которое ссылается на другую таблицу, которую я также могу использовать с :includes
?
Грубо говоря, код, который мне нужен, приведен ниже:
class User < ActiveRecord::Base
has_many :as, -> {
where('as.x >= bs.date_start and as.x <= bs.date_end')
}, through: :bs
end
Это работает, когда я создаю конкретную модель. Например,
> u = User.find(1)
> u.as.to_a
[...] # I get results I want
Однако я не могу использовать :includes
в этой ассоциации:
> User.includes(:as).where(id: [1])
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'as.x' in 'where clause': SELECT `bs`.* FROM `bs` WHERE (as.x >= bs.date_start and as.x < bs.date_end) AND `bs`.`id` IN (1)
Как я могу переписать свой код, чтобы я мог использовать :includes
в своей ассоциации?
РЕДАКТИРОВАТЬ: Я пытался переписать ассоциацию, как это, но это не сработало:
has_many, :as, -> (b) {
where('as.x >= ? and as.x <= ?', b.date_start, bs.date_end)
}, through: bs
> u = User.find(1)
> u.as
NoMethodError: undefined method 'date_start' for #<User:...>