3

次のような Rails 3 の Datamapper で Binary フィールドを持つモデルを作成しようとしています。

class Image

  include DataMapper::Resource

  # attributes
  property :id, Serial
  property :url, String
  property :file_name, String
  property :content_type, String
  property :data, Binary
  property :created_at, DateTime
  property :updated_at, DateTime

end

ただし、移行しようとすると、次のようになります。

ERROR:  type modifier is not allowed for type "bytea"
LINE 1: ..." VARCHAR(50), "content_type" VARCHAR(50), "data" BYTEA(50),...

datamapper がフィールドに設定している 50 の制限を削除する方法が見つからないようです。これを行う方法や問題を解決する方法を知っている人はいますか?

4

1 に答える 1

4

これはDataMapperのバグです。このスレッドをチェックしてください。GitHubですでに修正されていますが、まだリリースされていません。よろしければ、dm-migrationsにパッチを適用して修正するのは非常に簡単です。「dm-migrations/adapters / dm-do-adapter.rb」には、次のような行があります。

if dump_class.equal?(String) && schema_primitive != 'TEXT' && schema_primitive != 'CLOB' && schema_primitive != 'NVARCHAR'

と追加

&& schema_primitive != 'BYTEA'

それの終わりまで。

ここでコードをテストしましたが、適用されたパッチで動作します。

于 2012-04-15T00:23:47.650 に答える