Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Activerecord 保存对象时出现Ruby保留字错误_Activerecord_Attributes - Fatal编程技术网

Activerecord 保存对象时出现Ruby保留字错误

Activerecord 保存对象时出现Ruby保留字错误,activerecord,attributes,Activerecord,Attributes,我有一个表Radcheck,其中一列是'attribute'。使用safe_属性gem,我能够写入和读取列值,但在保存对象时,我遇到以下错误 Radcheck.new x = Radcheck.new x.send(:write_attribute, :attribute, 'aa') x.send(:read_attribute, :attribute, 'aa') x.save 保存对象时的错误日志 ArgumentError: wro

我有一个表Radcheck,其中一列是'attribute'。使用safe_属性gem,我能够写入和读取列值,但在保存对象时,我遇到以下错误

Radcheck.new  
x = Radcheck.new  
x.send(:write_attribute, :attribute, 'aa')   
x.send(:read_attribute, :attribute, 'aa')                    
x.save
保存对象时的错误日志

ArgumentError: wrong number of arguments (0 for 1)
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/attribute_methods/read.rb:141:in `attribute'
from /.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active_model/dirty.rb:143:in `attribute_change'
from /.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active_model/dirty.rb:117:in `block in changes'
from /.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active_model/dirty.rb:117:in `map'
from /.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active_model/dirty.rb:117:in `changes'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/attribute_methods/dirty.rb:23:in `save'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:in `block (2 levels) in save'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:208:in `transaction'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:in `block in save'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:252:in `rollback_active_record_state!'
from /.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:240:in `save'
from (irb):46
from /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start'
from /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start'
from /.rvm/gems/ruby-1.9.3-p0/gems/railties-3.1.3/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'ruby-1.9.3-p0 :047 > 
ArgumentError:参数数目错误(0表示1)
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/attribute\u methods/read.rb:141:in'attribute'
from/.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active\u model/dirty.rb:143:in'attribute\u change'
from/.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active\u model/dirty.rb:117:“更改中的块”中
from/.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active\u model/dirty.rb:117:在“地图”中
from/.rvm/gems/ruby-1.9.3-p0/gems/activemodel-3.1.3/lib/active\u model/dirty.rb:117:in“changes”
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/attribute\u methods/dirty.rb:23:在“保存”中
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:在“保存中的块(2个级别)”中
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/transactions.rb:295:in `带事务返回状态的块入'
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/connection\u adapters/abstract/database\u语句。rb:192:在“事务”中
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/transactions.rb:208:in“transaction”
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/transactions.rb:293:in“with\u transaction\u returning\u status”
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/transactions.rb:241:“保存中的块”中
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/transactions.rb:252:处于“回滚”活动记录状态
from/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active\u record/transactions.rb:240:在“保存”中
来自(irb):46
from/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in'start'
from/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in'start'
from/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.1.3/lib/rails/commands.rb:40:in`'
来自脚本/rails:6:in'require'
来自脚本/rails:6:in`'ruby-1.9.3-p0:047>

嗨,朋友,我认为安全属性没有问题

Radcheck.new  
x = Radcheck.new  
x.send(:write_attribute, :attribute, 'aa')   
#read_attribute does not requires any value
#x.send(:read_attribute, :attribute, 'aa') 
x.send(:read_attribute, :attribute)                
x.save
您还可以调用real_属性,直接在活动记录对象上写入_属性

Radcheck.new  
x = Radcheck.new  
x.write_attribute(:attribute, 'aa')
x.read_attribute(:attribute)              
x.save

还要确保您的模型中包含以下内容

class Radcheck < ActiveRecord::Base
  bad_attribute_names :attribute
end
class-Radcheck
谢谢您的回复。但我遵循了安全属性文档。但仍然得到同样的错误。我正在使用ruby 1.9.3和rails 3.1(安全属性在1.9.2和1.8.7上进行了测试)