2012-01-27 14 views
0

私はカラムの1つとして '属性'を持つテーブルRadcheckを持っています。 safe_attribute gemの使用私は列の値を書き込んで読み込むことができますが、オブジェクトを保存する際にエラーが発生します。オブジェクトを保存中にRuby予約語エラーが発生しました

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 > 

答えて

0

こんにちは友人を節約しながら、私はsafe_attributes宝石に関連した問題を考えていません。

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_attribute、write_attributeをアクティブなレコードオブジェクトで直接呼び出すこともできます。

Visit safe attributes

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 
+0

ご返信ありがとうございます。しかし、私はsafe_attributeのドキュメントに従っています。しかし、まだ同じエラーが発生しています。私はRuby 1.9.3、レール3.1(安全属性は1.9.2、1.8.7でテスト済みです) – pratik

関連する問題