【发布时间】:2013-02-11 13:06:48
【问题描述】:
我正在尝试在 Rails 模型上使用 ActiveResource 实现基本的 CRUD 操作。
文档说要创建ActiveResource::Base 的子类,然后设置self.site。
这很有效,直到我尝试更新已获取的现有记录。
我看到的错误是“MassAssignmentSecurity::Error”,当我在我的 ActiveResource 对象上调用 'save()' 方法时,由于无法访问 created_at 和 updated_at 字段,该错误出现。
我发现如果在我的模型类上用 attr_accessible 标记这些字段,它可以正常工作,但这似乎是一个非常不安全且非常糟糕的解决方案。
下面显示了该问题的示例:
rails new TestApp
cd TestApp
rails generate scaffold User first:string last:string
rake db:create
rake db:migrate
rails server
在我使用的另一个终端选项卡上:
irb
require 'active_resource'
class User < ActiveResource::Base
self.site = 'http://localhost:3000'
end
u = User.new()
u.first = 'John'
u.last = 'Shine'
u.save()
#This saves ok
nu = User.find(1)
nu.first = 'Geoff'
nu.save()
#This never works
有没有更好的解决方案?
【问题讨论】:
标签: ruby-on-rails ruby oop