加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何改进此Rails代码?

发布时间:2020-12-17 02:50:12 所属栏目:百科 来源:网络整理
导读:我正在编写一个小浏览器游戏作为学习RoR的项目,我对它很陌生. 这是一个由cronjob定期调用的方法. 我猜应该有一些方法可以在魔药阵列中添加元素,然后在最后进行批量保存,我也不喜欢每次在循环中点击数据库以再次获得市场的项目数量. def self.restock_energy_
我正在编写一个小浏览器游戏作为学习RoR的项目,我对它很陌生.

这是一个由cronjob定期调用的方法.

我猜应该有一些方法可以在魔药阵列中添加元素,然后在最后进行批量保存,我也不喜欢每次在循环中点击数据库以再次获得市场的项目数量.

def self.restock_energy_potions
  market = find_or_create_market

  potions = EnergyPotion.find_all_by_user_id(market.id)

  while (potions.size < 5)
    potion = EnergyPotion.new(:user_id => market.id)
    potion.save
    potions = EnergyPotion.find_all_by_user_id(market.id)
  end    
end

解决方法

我不确定我是否理解你的问题.你在找这样的东西吗?

def self.restock_energy_potions
  market = find_or_create_market   
  potions = EnergyPotion.find_all_by_user_id(market.id)
  (potions.size...5).each {EnergyPotion.new(:user_id => market.id).save }
  end    
end

注意范围内的三点;如果已经有5个,你不想创造药水.

此外,如果您的魔药被链接(例如通过has_many),您可以通过market.potions属性创建它们(我在这里猜测,关于用户和市场之间的关系 – 细节取决于您的模型的设置方式)并保存他们一下子.我不认为数据库的节省会很重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读