次の 2 つのクラスがあるとします。
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')
2番目に試しました:
def self.by_state(state)
VacationRequestDay.joins(:vacation_request)
.where(:vacation_request => { :state => state })
end
これにより、同じエラーが発生します。誰かがそれを修正する方法を知っていますか? ご覧のとおり、 レールガイドとスタックオーバーフローのヒントをすでに試しました