2

私は現在、Railsモデルで「store」を使用してさまざまなものをハッシュに永続化しています。これは、このデータに対して多くの個別の属性を作成する必要がなく、シリアル化/逆シリアル化するので便利です。また、必要に応じて個々のハッシュ属性に簡単にアクセスできます。コードスニペット(簡略化):

class Request < ActiveRecord::Base
  attr_accessible :data

  # Data is a nested hash
  store :data

  # Validation
  validates_presence_of :data
end

:dataが非常に大きくなる場合(他のトピック全体)、この設計は理想的ではない可能性があることを認識していますが、それまでの間、次のことを知りたいと思います。

  1. 'テキスト'列のデフォルトの最大サイズはいくつですか?私は現在PostGresDBを使用しており、舞台裏でVARCHARを使用していると思いますが、この列の最大サイズが実際にDBにあるかどうかわかりませんか?
  2. Rails移行create_tableコードでこの:dataテキスト列の最大サイズを明示的に設定できますか?
  3. この:data属性が大きすぎるレコードを保存しようとすると、Railsは何をしますか?研究はそれがそれを切り刻むと信じて、それが収まるものを保存するように私を導きます(非常に悪いです!)
  4. 潜在的なハッシュ破損から保護し、DBに保存する前に:data size <MAX許容サイズを検証するにはどうすればよいですか?
4

1 に答える 1

1

移行で最大長を設定する

http://databasically.com/2011/03/01/a-limit-of-rails-migrations/

次に、モデルの長さを検証します

http://guides.rubyonrails.org/active_record_validations_callbacks.html#length

于 2012-11-01T19:56:27.143 に答える