创建操作后更新数据库不起作用

阿福拉比·奥劳卢瓦·阿金乌米

set_bonus(member_id, cookie)方法不起作用。我正在尝试更新与self.set_signup_attribution(member_id, cookie, origin)返回相同的模型

new_has_value变量返回{"currency"=>"usd", "type"=>"flat", "amount"=>1000}

模型.rb

# THIS METHOD WORKS
def self.set_signup_attribution(member_id, cookie, origin)
  return unless cookie.present?
  tracking_code = cookie
  attribution_channel = AttributionChannel.find_by tracking_code: tracking_code
  associated_member_record = Member.find member_id
  if attribution_channel.present?
    Attribution.create!({
      event: Attribution::SIGN_UP,
      attribution_channel: attribution_channel,
      associated: associated_member_record,
      extra: origin
    })
    set_bonus(member_id, cookie)
  else
    Rails.logger.info "Unknown Attribution Channel for tracking code: '#{ tracking_code }'"
  end
end


# THIS METHOD DOES NOT WORK. UPDATES THE DATABASE.
def self.set_bonus(member_id, cookie)
  epoch = Member.find_by(id: member_id).attribution_epoch
  attribution_code = AttributionChannel.find_by(tracking_code: cookie)
  duration_value = attribution_code.attribution_duration.downcase.split(' ')
  duration = duration_value.first.to_i.send(duration_value.last)
  return if cookie.present? && epoch.present?
  current_time = Time.now
  if attribution_code.bonus_config.present?
    if (current_time - epoch).to_i < duration
      hash_value = attribution_code.bonus_config
      new_hash_value = hash_value.assoc("sign_up")[1]
      value = Attribution.where(attribution_channel_id: attribution_code)
      if new_hash_value["type"] == "flat"
        value.update_all(
          bonus_amount: new_hash_value["amount"],
          bonus_currency: new_hash_value["currency"]
        )
      elsif new_hash_value["type"] == "percentage"
        value.update_all(
          bonus_amount: new_hash_value["amount"],
          bonus_currency: new_hash_value["currency"]
        )
      else
        {
          bonus_amount: "Doesn't exist",
          bonus_currency: "Doesn't exist"
        }
      end
    else
      "Do nothing"
    end
  else
    "Do nothing"
  end
  #cookie = nil
  binding.pry
end

控制器文件

def index
  unless session[:just_signed_up]
    redirect_back_or_settings_page
  end
  Attribution.set_signup_attribution(current_user, cookies[:visit_attr], request.referer)
  Attribution.set_bonus(current_user, cookies[:visit_attr])
  session[:just_signed_up] = false
  @email = current_user.email
end

我该怎么做?这就是我已经尝试过但不起作用的方法。我可以将set_bonus方法合并set_signup_attribution方法或其他什么吗?

任何帮助将不胜感激。

所以进一步钻研:

我合并set_bonusset_signup_attribution和这两个字段(bonus_amount和bonus_currency),其set_bonus方法是应该更新返回nil

Attribution.create!(
  {
    event: Attribution::SIGN_UP,
    attribution_channel: attribution_channel,
    associated: associated_member_record,
    extra: origin
  }.merge(self.set_bonus(member_id, cookie).to_h)
)

使用后此钻头binding.pryset_bonus的方法,我想通了,它的工作,但它的返回nil,我不知道为什么。可能是因为member_id在模型中不可用还是什么?

祖扎伊

在您的if语句中,您应该set_bonus在适当的对象上调用方法。

    attribution = Attribution.create!({
      event: Attribution::SIGN_UP,
      attribution_channel: attribution_channel,
      associated: associated_member_record,
      extra: origin
    })
    attribution.set_bonus(member_id, cookie) if attribution.persisted?

请小心.create!,以防万一出现错误,因此可能会更好地使用

  attribution = Attribution.new(.....)
  if attribution.save
    attribution.set_bonus(.....)
  else
    Rails.logger.info  attribution.errors
  end

我希望这会有所帮助。

干杯

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS-使用sqlite数据库更新数据不起作用

来自分类Dev

实体框架中数据库的更新模型不起作用

来自分类Dev

无法创建Sqlite数据库或DatabaseHandler.java的构造方法不起作用

来自分类Dev

setContentOffset在更新数据后不起作用

来自分类Dev

使用ajax,jquery和PHP从数据库更新图像不起作用

来自分类Dev

从数据库检索数据后,为什么动态添加部分不起作用?

来自分类Dev

插入数据库不起作用

来自分类Dev

zend框架更新数据库不起作用

来自分类Dev

SQL数据库更新不起作用

来自分类Dev

iOS-使用sqlite数据库更新数据不起作用

来自分类Dev

访问数据库后,其余语句不起作用

来自分类Dev

创建和删除数据库将不起作用

来自分类Dev

拖放操作后更新数据库

来自分类Dev

检查数据库中表中的数量后,Insert SQL语句不起作用

来自分类Dev

onclick提交上的数据库更新字段不起作用

来自分类Dev

使用php建立数据库连接后进行修改后,它不起作用

来自分类Dev

sqlite数据库映像存储成功,但更新不起作用。以blob类型存储映像

来自分类Dev

sqlite数据库不起作用

来自分类Dev

使用ajax,jquery和PHP从数据库更新图像不起作用

来自分类Dev

更新数据库记录不起作用

来自分类Dev

使用ajax的数据库更新不起作用

来自分类Dev

在 Greenplum/Postgresql 数据库上使用 java 驱动程序创建序列不起作用

来自分类Dev

插入数据库不起作用

来自分类Dev

从数据库中获取数据并且更新不起作用

来自分类Dev

更新 derby 数据库中的记录不起作用

来自分类Dev

onClick 更新到 Firebase 数据库不起作用

来自分类Dev

Android Studio SQLite 数据库创建不起作用?

来自分类Dev

节点 - For 循环更新数据库不起作用

来自分类Dev

在laravel中注册后保存到数据库不起作用

Related 相关文章

  1. 1

    iOS-使用sqlite数据库更新数据不起作用

  2. 2

    实体框架中数据库的更新模型不起作用

  3. 3

    无法创建Sqlite数据库或DatabaseHandler.java的构造方法不起作用

  4. 4

    setContentOffset在更新数据后不起作用

  5. 5

    使用ajax,jquery和PHP从数据库更新图像不起作用

  6. 6

    从数据库检索数据后,为什么动态添加部分不起作用?

  7. 7

    插入数据库不起作用

  8. 8

    zend框架更新数据库不起作用

  9. 9

    SQL数据库更新不起作用

  10. 10

    iOS-使用sqlite数据库更新数据不起作用

  11. 11

    访问数据库后,其余语句不起作用

  12. 12

    创建和删除数据库将不起作用

  13. 13

    拖放操作后更新数据库

  14. 14

    检查数据库中表中的数量后,Insert SQL语句不起作用

  15. 15

    onclick提交上的数据库更新字段不起作用

  16. 16

    使用php建立数据库连接后进行修改后,它不起作用

  17. 17

    sqlite数据库映像存储成功,但更新不起作用。以blob类型存储映像

  18. 18

    sqlite数据库不起作用

  19. 19

    使用ajax,jquery和PHP从数据库更新图像不起作用

  20. 20

    更新数据库记录不起作用

  21. 21

    使用ajax的数据库更新不起作用

  22. 22

    在 Greenplum/Postgresql 数据库上使用 java 驱动程序创建序列不起作用

  23. 23

    插入数据库不起作用

  24. 24

    从数据库中获取数据并且更新不起作用

  25. 25

    更新 derby 数据库中的记录不起作用

  26. 26

    onClick 更新到 Firebase 数据库不起作用

  27. 27

    Android Studio SQLite 数据库创建不起作用?

  28. 28

    节点 - For 循环更新数据库不起作用

  29. 29

    在laravel中注册后保存到数据库不起作用

热门标签

归档