私は自分のRailsアプリにキャッシュを追加していると私はやっていることの一つは、(代わりに.create
の).new
方法を使用してActiveRecordのモデルをインスタンス化されるので、それは新しい行を作成しようとしません。例えばキャッシュからActiveRecordモデルをインスタンス化するにはどうすればよいですか?
、私は私のモデルにこれを追加した場合:
def from_json(json)
o = self.new
ActiveSupport::JSON.decode(json).each do |k, v|
# NOTE: I am doing this instead of sending all the params to .new
# because Rails won't let me bulk update protected attributes
o.send(k + '=', v)
end
o
end
そして、キャッシュからオブジェクトインスタンス化:私は、フィールドを変更しようとするまで
o = Foo.from_json(redis.get(key))
すべてがうまく動作しているように:
これは重複するエントリであるという例外があります。
は、どのように私はこの実際にはそれが投げると例外の代わりにその行を更新するようにデータベースにすでに存在する行を指していることはActiveRecordを教えていますか?
あなたがしようとしていることを理解することは本当に難しいです。 – lucapette