6

has_one現在、find メソッドまたは create メソッドを使用して、キャッシュされた情報を保存するために使用する関連レコードを更新していますが、オブジェクトが関係であるため、build に似たより簡単な代替メソッドがあるかどうか疑問に思っています。build_ を使用するだけの問題は、ほとんどの場合、オブジェクトが存在し、更新する必要があることです。たくさんの ifs チェックを使用できましたが、現在使用しているよりも優れた rails-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 の計算方法の平均、合計などは 3.1 で減価償却されるので、それらを置き換える必要があるかどうかはわかりませんか?

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

1 に答える 1

4

私は自分のために1つ書いたhas_one :event

  def build_or_update_event(params)
    result = new_record? ? build_event(params) : event.update_attributes(params)
    result != false
  end
于 2012-03-26T12:31:07.083 に答える