0

私は同じシナリオを試しましたrails console

しかし、なぜ私は...

未定義eachのメソッド#<ProjectProcurementManagementPlan:0x007ff9ecda2148>

私のモデルには、フォームをすぐに更新するコールバックがあります

after_update :check_app_on_update?

def check_app_on_update?

      self.each do |ppmp|
        ppmp_year = ppmp.year
        get_app = AnnualProcurementPlan.where(year: ppmp_year)
        get_id = get_app.map{|a| a.id }
        get_id.each do |app_id|
          update_attribute(:annual_procurement_plan_id, app_id)
        end
      end  
    end

しかし、取得し続けますundefined method 'each'

self.eachしかし、ループを削除するたびに...

'stack level too deep'エラーの種類が表示されます。

任意の回避策をいただければ幸いです。

編集

さて、私は古いアプローチに固執する必要があることに気付きました。そして、それはなしですeach

def check_app_on_update?
      ppmp_year = self.year
      get_app = AnnualProcurementPlan.where(year: ppmp_year)
      get_id = get_app.map{|a| a.id }

      get_id.each do |app_id|
        # ppmp = ProjectProcurementManagementPlan.last    
        #         ppmp.update_attribute(:annual_procurement_plan_id, app_id )
        @idd = app_id
      end
        update_attribute(:annual_procurement_plan_id, @idd )
  end

しかし、私はstack level too deepエラーが発生しています

ログから、無限ループがあることがわかりました。

(0.5ms)  UPDATE "project_procurement_management_plans" SET "status" = 'Approved', "updated_at" = '2013-05-31 09:55:00.000000', "annual_procurement_plan_id" = 1 WHERE "project_procurement_management_plans"."id" = 19
  AnnualProcurementPlan Load (0.5ms)  SELECT "annual_procurement_plans".* FROM "annual_procurement_plans" WHERE "annual_procurement_plans"."year" = 2012
   (0.2ms)  ROLLBACK
Completed 500 Internal Server Error in 16737ms

SystemStackError - stack level too deep:
  (gem) actionpack-3.2.11/lib/action_dispatch/middleware/reloader.rb:70:in `'
4

2 に答える 2