私は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)
悲しいことに、これは私にとって何の意味もありません。誰でもここで助けることができますか?