DataMapper: создать новую запись или обновить существующую - PullRequest
5 голосов
/ 02 апреля 2010

Предоставляет ли DataMapper удобный способ создания новой записи, когда ее нет, или обновления существующей? Я не смог найти ничего в документации API.

Это то, что у меня есть на данный момент, и выглядит не очень элегантно:

foo = Foo.get(id)
if foo.nil?
  foo = Foo.create(#attributes...)
else
  foo.update(#attributes...)
end
foo.save

Ответы [ 2 ]

4 голосов
/ 11 апреля 2010
Foo.first_or_create(:id=>id).update(attributes)

или

(Foo.get(id) || Foo.new).update(attributes)
1 голос
/ 13 августа 2013

Я просто пытаюсь

Foo.first_or_create(:id=>id).update(attributes)

но иногда это неправильно, поэтому я нахожу несколько советов здесь: Документы DataMapper

Теперь я заставляю свой код работать так:

Foo.first_or_create({:id=>id}, {:name => name}).update(:id => id, :name => name)

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...