ruby - Datamapper "Update"不更新记录

标签 ruby datamapper

我在数据映射器未更新模型时遇到问题。我可以毫无问题地创建和保存模型。我启用了 raise_on_save_failure 并检查了 update 的返回值,但没有看到任何错误。

这是模型:

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 

这是它在 Controller 中更新的地方:

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

当调用 Controller update 时总是返回true,并且错误列表中永远不会有错误。设置为 :debug 的数据映射器日志仅显示用于检索 useruser_profileSELECT 查询仅此而已。为什么我能够保存一个新创建的模型,但不允许更新相同的模型?

最佳答案

删除 attr_accessor 解决了这个问题。根据我的研究,attr_accessor 用于不在数据库中的属性。

关于ruby - Datamapper "Update"不更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10107109/

相关文章:

ruby - 如何将 Datamapper 与 Heroku Scheduler 结合使用?

ruby - App Engine Jruby DataMapper 列表属性

ruby - 如何在 Rails 5 中使用来自设计邮件程序的辅助方法?

ruby-on-rails - RSpec 3.6 和 Rails 5.0.1 - ArgumentError : wrong number of arguments (given 0, 预期 1)

ruby-on-rails - 在 Rails 上重用 View

ruby - 使用 Datamapper 遍历整个表的最有效方法是什么?

mysql - Datamapper 独特约束和偏执删除

ruby - 在 Ruby 中使用 Unix 进程控制方法

ruby-on-rails - 一次创建多个多态记录 rails

php - 数据映射器,仅用于CRUD操作?