1

次のように、有効期限をキャッシュするために日時の配列を合計する必要があります。

# posts_controller.rb
@posts = Post.all

# index.html.erb
<% cache [:posts, :index, @posts.sum(&:updated_at)] do %>
# ...

私はどれが等しいと思います:

@posts.map(&:updated_at).reduce(:+)

問題は、コードがローカルで正しく動作している (キャッシュとコンソール テスト済み) ことですが、heroku にデプロイすると、本番環境で次のエラーが返されます。

TypeError: not an integer
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/core_ext/date_time/calculations.rb:67:in `convert'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/core_ext/date_time/calculations.rb:67:in `Rational'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/core_ext/date_time/calculations.rb:67:in `since'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/core_ext/time/calculations.rb:116:in `rescue in since'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/core_ext/time/calculations.rb:114:in `since'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/time_with_zone.rb:223:in `rescue in +'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/time_with_zone.rb:223:in `+'
from (irb):25:in `each'
from (irb):25:in `reduce'
from (irb):25
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

Rubyのバージョンは同じ(1.9.3)です。Railsのバージョンは同じです(3.2.13)。

前もって感謝します。

編集

@posts.map(&:updated_at)

含む

[Thu, 11 Jul 2013 18:35:53 UTC +00:00, Thu, 11 Jul 2013 18:35:58 UTC +00:00,
Thu,11 Jul 2013 18:36:02 UTC +00:00, Thu, 11 Jul 2013 18:36:05 UTC +00:00,
Thu, 11 Jul 2013 18:36:09 UTC +00:00, Thu, 11 Jul 2013 18:36:14 UTC +00:00,
Thu, 11 Jul 2013 18:36:18 UTC +00:00]
4

1 に答える 1

0

最近更新された投稿だけをキャッシュ キーにしてみてはいかがでしょうか。

<% cache [:posts, :index, @posts.order(:updated_at).last] do %>
于 2013-07-19T20:38:35.593 に答える