1

次の 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

これにより、同じエラーが発生します。誰かがそれを修正する方法を知っていますか? ご覧のとおり、 レールガイドスタックオーバーフローのヒントをすでに試しました

4

0 に答える 0