0

私はGPSでトラックを記録しており、それをPostgre DBに送信しています。次に、速度= 0の先頭と末尾の測定値を削除したいと思います。次のように試しました:

while track.measurements.last.speed == 0
      track.measurements.last.destroy
end

(track.measurements.first についても同じ)。このコードが実行されると、すべてがエラーなしで停止します。デバッグして段階的に進めた結果、次の 2 つの行が繰り返し切り替えられることがわかりました。

(rdb:102) s /var/lib/gems/1.9.1/gems/activerecord-3.2.11/lib/active_record/associations.rb:156 関連付け = 関連付け_インスタンス_get(名前)

(rdb:102) l
[151, 160] in /var/lib/gems/1.9.1/gems/activerecord-3.2.11/lib/active_record/associations.rb
   151      # :nodoc:
   152      attr_reader :association_cache
   153  
   154      # Returns the association instance for the given name, instantiating it if it doesn't already exist
   155      def association(name) #:nodoc:
=> 156        association = association_instance_get(name)
   157  
   158        if association.nil?
   159          reflection  = self.class.reflect_on_association(name)
   160          association = reflection.association_class.new(self, reflection)
(rdb:102) s
/var/lib/gems/1.9.1/gems/activerecord-3.2.11/lib/active_record/associations.rb:170
@association_cache[name.to_sym]

(rdb:102) l
[165, 174] in /var/lib/gems/1.9.1/gems/activerecord-3.2.11/lib/active_record/associations.rb
   165      end
   166  
   167      private
   168        # Returns the specified association instance if it responds to :loaded?, nil otherwise.
   169        def association_instance_get(name)
=> 170          @association_cache[name.to_sym]
   171        end
   172  
   173        # Set the specified association instance.
   174        def association_instance_set(name, association)

悲しいことに、これは私にとって何の意味もありません。誰でもここで助けることができますか?

4

2 に答える 2