Rails 4, Ruby 2.0: Get PG Error при попытке получить все записи, имеющие указанное значение в объединенной таблице
Даны следующие два класса:
class VacationRequestDay < ActiveRecord::Base
belongs_to :vacation_request, :inverse_of => :vacation_request_days,
:class_name => "VacationRequest",
:foreign_key => "vacation_request_id"
#attributes: :id, :vacation_request_id, :date, :fullday
end
class VacationRequest < ActiveRecord::Base
has_many :vacation_request_days, dependent: :destroy,
inverse_of: :vacation_request
#attributes: :id, state, :user
end
Я хочу получить все VacationRequestDays где vacation_request_day.vacation_request.state == :pending
Я попробовал следующее (в классе VacationRequestDay):
scope :by_state, lambda { |state| joins(:vacation_request).where('vacation_request.state = ?', state) }
which results in the following Postgres error:
ActiveRecord::StatementInvalid:
PG::Error: ERROR: missing FROM-clause entry for table "vacation_request"
LINE 1: ...cation_request_days"."vacation_request_id" WHERE (vacation_r...
^
: SELECT "vacation_request_days".* FROM "vacation_request_days" INNER JOIN "vacation_requests" ON "vacation_requests"."id" = "vacation_request_days"."vacation_request_id" WHERE (vacation_request.state = 'pending')
Второй я попробовал:
def self.by_state(state)
VacationRequestDay.joins(:vacation_request)
.where(:vacation_request => { :state => state })
end
Это приводит к той же ошибке. Кто-нибудь знает, как это исправить? Как видите, я уже попробовал подсказки из руководства по направляющим и stackru