Params 순서 Foo.뉴(params[:foo]),중 하나가 필요하기 전에 다른(Rails)
-
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
제휴하지 않습니다 StackOverflow