Params 순서 Foo.뉴(params[:foo]),중 하나가 필요하기 전에 다른(Rails)

StackOverflow https://stackoverflow.com/questions/2541708

  •  23-09-2019
  •  | 
  •  

문제

나는 문제는 내가 알지 못하는 방법을 해결할 수 있습니다.그것은으로 정렬하지 않 params 해시입니다.

나는 개체 예약에는 가상 시간=속성과 가상 eating_session=특성 때 내가 시간을 설정=도 검증을 통해 그것을 외부 서버로 요청을 합니다.내가 하는 것으로 도움의 방법은 시간()만드는 검색에 다른 서버에 저장이 가능한 모든 시간에 시간을 변수입니다.

문제는 이제 방법은 시간()필요 eating_session 특성을 찾을 수 있는 시간이 유효하지만,때로는 레일 통화 시간=방법 먼저 앞에 있는 모든 eating_session 예약 객체를 때 나는 그냥 그렇게@예약=습니다.뉴(params[:예약])

class ReservationsController < ApplicationController
    def new
        @reservation = Reservation.new(params[:reservation])
        # ...
    end
end

class Reservation < ActiveRecord::Base
    include SoapClient
    attr_accessor :date, :time
    belongs_to :eating_session

    def time=(time)
        @time = times.find { |t| t[:time] == time }
    end

    def times
        return @times if defined? @times
        @times = []
        response = call_soap :search_availability {
            # eating_session is sometimes nil
            :session_id => eating_session.code, # <- HERE IS THE PROBLEM
            :dining_date => date
        }
        response[:result].each do |result|
            @times << {
                :time => "#{DateTime.parse(result[:time]).strftime("%H:%M")}",
                :correlation_data => result[:correlation_data]
            }
        end
        @times
    end
end

나는 아이디어가 있지 않을 해결하는 방법이,어떤 도움 apriciated.

도움이 되었습니까?

해결책

내가 무엇을 자주 이 경우 밀어 의존 코드로 검증:

class ReservationsController < ApplicationController
    def new
        @reservation = Reservation.new(params[:reservation])
        # ...
    end
end

class Reservation < ActiveRecord::Base
    include SoapClient
    attr_accessor :date, :time
    belongs_to :eating_session
    validate :validate_time

    def validate_time
      errors.add_to_base "Time is invalid" unless @time = times.find { |t| t[:time] == time }
    end

    def times
        return @times if defined? @times
        @times = []
        response = call_soap :search_availability {
            # eating_session is sometimes nil
            :session_id => eating_session.code, # <- HERE IS THE PROBLEM
            :dining_date => date
        }
        response[:result].each do |result|
            @times << {
                :time => "#{DateTime.parse(result[:time]).strftime("%H:%M")}",
                :correlation_data => result[:correlation_data]
            }
        end
        @times
    end
end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top