0

我正在使用 Vestal 版本 2 个月。直到今天下午,一切都很好。我没有做任何特别的事情(或者我不记得了......)但代码在其他计算机上运行良好......

问题是我无法再保存我的模型了:rails 给了我这个错误: ActiveRecord::DangerousAttributeError: changes is defined by ActiveRecord

changes 字段默认是一个 activerecord 方法。

使用控制台,消息是下一条:

ActiveRecord::DangerousAttributeError: changes is defined by ActiveRecord

这是我的本地 gem 文件:

abstract (1.0.0)
actionmailer (3.0.0.beta3)
actionpack (3.0.0.beta3)
activemodel (3.0.0.beta3)
activerecord (3.0.0.beta3)
activeresource (3.0.0.beta3)
activesupport (3.0.0.beta3)
arel (0.3.3)
builder (2.1.2)
bundler (0.9.25, 0.9.24)
crack (0.1.7)
erubis (2.6.5)
god (0.9.0)
haml (3.0.1, 2.2.23)
i18n (0.3.7)
mail (2.2.0)
memcache-client (1.8.3)
memcached (0.17.7)
mime-types (1.16)
polyglot (0.3.1)
rack (1.1.0)
rack-mount (0.6.3)
rack-test (0.5.3)
rails (3.0.0.beta3)
railties (3.0.0.beta3)
rake (0.8.7)
savon (0.7.8, 0.7.6)
text-format (1.0.0)
text-hyphen (1.0.0)
thor (0.13.6, 0.13.4)
treetop (1.4.5)
tzinfo (0.3.20)

这里是我的 Gemfile

source 'http://gemcutter.org'

gem "rails", "3.0.0.beta3"

gem "will_paginate", "3.0.pre"

#gem 'nokogiri'
#gem 'curb'
#gem 'handsoap'
gem 'savon'
gem 'mysql'
gem 'haml', '2.2.23'
#gem 'haml', '3.0.1'
gem 'hpricot'
gem 'i18n', '> 0.3.5'
gem 'i18n_routing'
gem 'i18n_auto_scoping'
gem 'handler301', :git => 'http://github.com/kwi/handler301.git'
gem 'seo_meta_builder'

gem 'vestal_versions'

#gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git', :branch => 'rails3'

## Bundle edge rails:
gem "rails", :git => "git://github.com/rails/rails.git"

## Bundle the gems you use:
# gem "bj"
# gem "hpricot", "0.6"
# gem "sqlite3-ruby", :require => "sqlite3"
# gem "aws-s3", :require => "aws/s3"

## Bundle gems used only in certain environments:
# gem "rspec", :group => :test
# group :test do
#   gem "webrat"
# end

如果您有任何解决此问题的建议,我将很高兴听到他们的声音!

谢谢

4

1 回答 1

2

您的模型中有一个名为更改的字段。这是一种不好的做法,因为属性访问器将掩盖原始更改方法。ActiveRecord::Base 的方法绝不能用作数据库中的列名。

如果你没有改变任何东西,那么你现在看到这个很奇怪。您是否升级了 ActiveRecord gem,或者将某个列重命名为更改。

如果您可以接受,最简单的解决方法是重命名数据库中的更改列。

于 2010-05-11T17:16:42.190 回答