0

互いにリンクしている 2 つのモデルがあります。

class User
  include DataMapper::Resource

  property :id, Serial
  has n, :mail_addresses
end

class MailAddress
  include DataMapper::Resource

  property :id, Serial
  property :email, String, :required => true, :unique => true, :format => :email_address

  belongs_to :user
end

ここで、プライマリ メール アドレスをユーザーに追加したいと考えています。したがって、次のようなことができます

some_user.primary_mail_address = some_user.mail_addresses.first

私はユーザーモデルでこのようなことをやろうとしてきましたが、うまくいきませんでした。

property :primary_mail_address_id, Integer, required: false
has 1, :primary_mail_address, model: 'MailAddress', parent_key: [:primary_mail_address_id], child_key: [:id]

上記のトリックにより、コード サンプルを実行できますが、実行しても primary_mail_address_id は更新されません。

どうやってするの?

4

1 に答える 1

0

独自のソリューションを見つけました。

問題は、私が と混同has 1したことbelongs_toです。実際には、モデルではなくモデルでhas 1プロパティを作成しようとする 1 対多の関係です。MailAddressUser

トリックは次のとおりです。

belongs_to :primary_mail_address, MailAddress, required: false
于 2012-11-15T20:34:46.223 に答える