foo.new(params [:foo])のパラメーション順序、他方の前に1つが必要です(Rails)

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

  •  23-09-2019
  •  | 
  •  

質問

修正方法がわからない問題があります。それは、無関心なパラメーションのハッシュに関係しています。

Virtual Time = AttributeとVirtual Eating_Session = Attributeを備えたオブジェクト予約があり、時間を設定するときに=外部サーバーリクエストを介して検証したい場合もあります。 Method Times()のヘルプを使用してそれを行い、他のサーバーでルックアップを行い、@Times変数ですべての時間を節約できます。

問題は、Method Times()がEatis_Session属性を必要として有効な時間を見つけることですが、Railsは、 @Reservation = Reservationを実行するときに予約オブジェクトにEating_Sessionがある前に、最初にTimes = Methodを呼び出すことがあります。 new(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

私はこれを修正する方法がわかりません、どんな助けも断ち切られます。

役に立ちましたか?

解決

  1. ここでptraceのストレート出力を見てください: PTRACE(PTRACE_PEEKTEXT、651,0XCC4FE480、[0x3AC706A4506FA1D])= 0 最後のパラメータが正方形の括弧で注釈されているのはなぜですか?それは戻り値を表すことを意味しますか?

    正しい。

    1. 2つの.soの間には、任意のiノードに関連付けられていないセクション(Who kont)があります。そのようなセクションは何を表しますか?

      mmapフラグを使用してMAP_ANONYMOUNSedされているメモリの領域です(すなわち、ディスク上のファイルには一致しません)。

      その地域のサイズは正確に1MBであり、PROT_NONEでマッピングされたプライベート領域に囲まれているので、この領域はスタックガードゾーンで囲まれたスレッドスタックを表すのは安全なベットです。

      1. GDBはそのセクションから1つの単語を読み取り、その単語をアドレスとして使用しますが、実際には無効なアドレスです。そのようなエラーの可能な原因は何ですか?

        何らかの理由でGDBはアドレス0x3ac7068にコードがあるべきであると考えており、内部ブレークポイントを配置したいと考えています。 GDBは内部ブレークポイントを使用してロードされた共有ライブラリを追跡します(とりわけ)

        maintenance info breakからの出力は、どのコードGDBが「悪い」アドレスに存在しているかを明らかにするべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top