我遇到数据映射程序不更新模型的问题。我可以创建并保存模型而不会造成问题。我已启用raise_on_save_failure
并检查返回值update
但看到没有错误。Datamapper“更新”不更新记录
这里是模型:
class UserProfile
include DataMapper::Resource
attr_accessor :id, :wants_hints, :is_beta_user
property :id, Serial #auto-increment integer key
property :is_beta_user, Boolean
property :wants_hints, Boolean
has 1, :user, :through => Resource
end
这里是它在控制器被更新:
if user = User.get(request.session[:user])
if request.params[:user_profile]
beta = request.params[:user_profile].has_key?('is_beta_user')
hints = request.params[:user_profile].has_key?('wants_hints')
user.user_profile.update({:is_beta_user => beta, :wants_hints => hints}) # returns true
Log.puts user.user_profile.errors.each {|e| Log.puts e.to_s} # returns empty list []
end
end
当控制器被称为update
总是返回true,并且永远不会有误差错误列表。数据映射器日志设置为:debug
,仅显示用于检索user
和user_profile
的SELECT
查询,这就是全部。为什么我能够save
一个新创建的模型,但不允许update
相同的模型?
检查并重复检查。它肯定会更新新值的属性。 – nathan 2012-04-13 22:03:21