我刚开始使用Datamapper.
我正在尝试update一个对象.我使用它的id获取对象/模型:
u1 = User.get(1)
u1.name = "xyz"
u1.update
Run Code Online (Sandbox Code Playgroud)
抛出错误/引发异常.我再试一次:
u1 = User.get(1)
Run Code Online (Sandbox Code Playgroud)
在那之后:
u1.update({:name => "xyz"})
Run Code Online (Sandbox Code Playgroud)
将抛出虚假并dirty?返回true.
之后,任何调用update都会失败,说它很脏.
我可以通过以下方式进行保存:
u1.name = "xyz"
u1.save
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
get(id)甚至改变一个领域?update?语法是什么:user.update({ ....})或user.name = "xyz"; user.update?dirty?,并且一旦我使对象变脏,我是否必须将对象从数据库中刷新到变量?从db中获取资源然后更改其属性时,资源变为"脏".这意味着资源已加载到内存中,其状态已更改,并且更改可以在db中保留.
您可以使用#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
Run Code Online (Sandbox Code Playgroud)