CouchRest モデルの GUID の代わりにカスタム文字列値 (オブジェクトの名前など) を _id フィールドとして使用する方法があるかどうか疑問に思います。
例えば
class Cat < CouchRest::Model::Base
property :name
end
デフォルトでは、GUID を _id フィールドとして使用します。しかし、name プロパティを _id として使用したいだけです。
CouchRest モデルの GUID の代わりにカスタム文字列値 (オブジェクトの名前など) を _id フィールドとして使用する方法があるかどうか疑問に思います。
例えば
class Cat < CouchRest::Model::Base
property :name
end
デフォルトでは、GUID を _id フィールドとして使用します。しかし、name プロパティを _id として使用したいだけです。
次のように 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 エントリで検証を確認することもできます。