facebook / facebook-ruby-business-sdk

Ruby SDK for Meta Marketing API
https://developers.facebook.com/docs/business-sdk
Other
209 stars 160 forks source link

fix: AdReportRun can't retain id with post insights #151

Open mktktmr opened 3 years ago

mktktmr commented 3 years ago

I'd like to use AdReportRun like below.

ad_account = FacebookAds::AdAccount.get(some_params)

# Generating a job to create report
ad_report_run = ad_account.insights.create(some_params)

# Waiting until the job completed
until ad_report_run.reload! && ad_report_run.async_status == "Job Completed"
  sleep 1
end

# Fetching the report
ad_report_run.insights.all

Unfortunately AdReportRun causes an error with api request in reality, because AdReportRun has report_run_id instead of id. As you know AdObject (and its sub class) try to get data by id.

ad_account = FacebookAds::AdAccount.get(some_params)

ad_report_run = ad_account.insights.create(some_params)

ad_report_run.async_status # error occurred
# => NoMethodError: undefined method `gsub' for nil:NilClass
#    from /usr/src/tmp/facebook-ruby-business-sdk/lib/facebook_ads/session.rb:41:in `request'

That's why I added a process to replace attributes report_run_id to id on AdObject#initialize.