2

CouchRest モデルの GUID の代わりにカスタム文字列値 (オブジェクトの名前など) を _id フィールドとして使用する方法があるかどうか疑問に思います。

例えば

class Cat < CouchRest::Model::Base
  property :name
end

デフォルトでは、GUID を _id フィールドとして使用します。しかし、name プロパティを _id として使用したいだけです。

4

1 に答える 1

3

次のように unique_id を使用してみることができます

class Cat < CouchRest::Model::Base
  property :name
  unique_id :name
end

unique_id は、ドキュメントが最初に保存される前に任意のメソッドを呼び出し、それをドキュメントの _id として割り当てます。ただし、_id フィールドと name フィールドの両方が設定された Cat ドキュメントが作成されます。名前が変更された場合、それらは同期しなくなる可能性さえあります。

おそらくより良いオプションは、ドキュメントの _id 属性を変更するだけのゲッターとセッターを作成することです

class Cat < CouchRest::Model::Base
  def name
    self['_id']
  end

  def name=(value)
    self['_id']=value
  end
end

この場合、追加のプロパティがないため、name は常にドキュメントの ID を返します。ただし、_id を再割り当てしても効果がないため、ドキュメントが作成されると名前を変更することはできません。

詳細情報: unique_idの rdoc は次のとおりです。また、カウチ レスト モデルの wiki エントリで検証を確認することもできます。

于 2011-10-10T23:49:23.697 に答える