Rails构建或更新方法



我目前正在使用查找或创建方法来更新我用来存储缓存信息的相关记录,但我想知道是否有一些更简单的替代方法类似于构建,因为对象是has_one关系。只使用build_的问题是,在大多数情况下,对象将存在并且需要更新。我可以使用一堆如果检查,但想知道是否有更好的轨道-fu比我目前使用的。

  def self.update_caches(data)
    cache = SpaceCache.find_or_create_by_space_id(@space.id)
    cache.rating = ((data.ratings.sum / data.ratings.size)/20).round
    cache.price_min = @space.availables.recent.average(:minimum)
    cache.price_avg = @space.availables.recent.average(:price)
    cache.save
  end
奖金:

我也读过这里:

http://m.onkey.org/active-record-query-interface

rails计算方法average, sum等将在3.1中折旧,所以我应该不确定是否应该替换它们吗?

count(column, options)
average(column, options)
minimum(column, options)
maximum(column, options)
sum(column, options)
calculate(operation, column, options)

我为我的has_one :event写了一个。

  def build_or_update_event(params)
    result = new_record? ? build_event(params) : event.update_attributes(params)
    result != false
  end

相关内容

  • 没有找到相关文章

最新更新