Что такое грязный ресурс? - PullRequest
       3

Что такое грязный ресурс?

2 голосов
/ 29 декабря 2011

Я только начал использовать Datamapper.

Я пытаюсь update объект. Я получаю объект / модель, используя его идентификатор:

u1 = User.get(1)
u1.name = "xyz" 
u1.update

, который выдает ошибку / вызывает исключение. Я попробовал еще раз:

u1 = User.get(1)

и после этого:

u1.update({:name => "xyz"})

выдаст false и dirty? вернет true.

После этого любой вызов update не сможет сказать, что он грязный.

Я могу сделать сохранение:

u1.name = "xyz"
u1.save

Вот мои вопросы:

  • Что я должен использовать: сохранить или обновить?
  • Должен ли я сказать get(id) хотя бы просто изменить одно поле?
  • Когда мне следует использовать update? Какой синтаксис: user.update({ ....}) или user.name = "xyz"; user.update?
  • Что такое dirty?, и когда я делаю объект грязным, нужно ли мне получить объект заново из базы данных в переменную?

1 Ответ

6 голосов
/ 02 января 2012

Когда вы выбираете ресурс из базы данных, а затем меняете его атрибуты, ресурс становится «грязным».Это означает, что ресурс загружен в память, и его состояние изменилось, и изменения могут быть сохранены в БД.

Вы используете #save, чтобы сохранить изменения, внесенные в загруженный ресурс, и вы используете #update, когда выхотите немедленно сохранить изменения без изменения состояния ресурса на «грязный».Вот пример сеанса:

User.create(:name => 'Ted')

# update user via #save
user = User.get(1)
user.name = 'John'
user.dirty? # => true
user.save

# update user via #update
user = User.get(1)
user.update(:name => 'John')
user.dirty? # => false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...