2016-06-17 1 views
0

Railsでオブジェクトを破壊するのに問題があります(Rails 4.2.3を使用しています)。それが重要な場合は、以下のコードオブジェクトを破壊しようとしたときに、引数の数が正しくない(0が与えられ、1が期待される)

user_my_object_time_match.destroy 

でこの行は、エラー

wrong number of arguments (given 0, expected 1) 

これは別のモデルでのトランザクションで削除されて失敗しています。以下は、ActiveRecordの関係(オブジェクトのコレクション)を破壊している場合は、周囲のトランザクション

def delete_my_object_and_any_matching_records 
    transaction do 
     linked_my_object = self.linked_my_object 
     if destroy 
     if !linked_my_object.nil? 
      user_my_object_time_match = UserMyObjectTimeMatch.joins(:my_object_time).where("my_object_time_id = ?", linked_my_object.my_object_times[0]) 
      if !user_my_object_time_match.nil? 
      user_my_object_time_match.destroy 

答えて

0

destroy_allを使用することです。 destroyは、単一のオブジェクトまたはオブジェクトのリストを破棄するためのもので、idです。

詳細情報はhttp://apidock.com/rails/ActiveRecord/Relation/destroy_allhttp://apidock.com/rails/v4.2.1/ActiveRecord/Relation/destroyです。

これらは似ていますが微妙に異なります。また、deletedelete_allは、対応するdestroyより高速ですが、コールバックを呼び出さないことに注意してください。

関連する問題