Serialize

Witam,

mam taki problem, otóż mój model wygląda tak:

class EducationLevel < ActiveRecord::Base
validates :name, :presence => true, :uniqueness => true
serialize :hold_levels, Array

def hold_levels
read_attribute(:hold_levels) || []
end

def hold_levels=(perms)
perms = perms.collect {|p| p.to_sym unless p.blank? }.compact.uniq if perms
write_attribute(:hold_levels, perms)
end
end

i wykonując serie poleceń w konsoli:

e = EducationLevel.new(:name => “test”)
e.hold_levels = [“1”,“2”]
e.save

otrzymuję błąd:

ArgumentError: wrong number of arguments (2 for 1)
from /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/psych/nodes/node.rb:33:in to_yaml' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/psych-1.2.0/lib/psych.rb:190:indump’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/base.rb:1726:in block in arel_attributes_values' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/base.rb:1719:ineach’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/base.rb:1719:in arel_attributes_values' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/persistence.rb:276:increate’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/timestamp.rb:47:in create' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/callbacks.rb:277:inblock in create’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:414:in _run_create_callbacks' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/callbacks.rb:277:increate’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/persistence.rb:257:in create_or_update' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/callbacks.rb:273:inblock in create_or_update’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:414:in _run_save_callbacks' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/callbacks.rb:273:increate_or_update’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/persistence.rb:40:in save' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/validations.rb:43:insave’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/attribute_methods/dirty.rb:21:in save' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/transactions.rb:240:inblock (2 levels) in save’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/transactions.rb:292:in block in with_transaction_returning_status' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:139:intransaction’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/transactions.rb:207:in transaction' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/transactions.rb:290:inwith_transaction_returning_status’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/transactions.rb:240:in block in save' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/transactions.rb:251:inrollback_active_record_state!’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/activerecord-3.0.10/lib/active_record/transactions.rb:239:in save' from (irb):64 from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/railties-3.0.10/lib/rails/commands/console.rb:44:instart’
from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in start' from /usr/local/rvm/gems/ruby-1.9.2-p180@rails3/gems/railties-3.0.10/lib/rails/commands.rb:23:in<top (required)>’
from script/rails:6:in `require’

Szukam już od dłuższego czasu rozwiązania i kończą mi się pomysły.
Używam rails 3.0.10

Bardzo proszę o pomoc.

Wygląda na bug rubiego. Zaktualizuj ruby 1.9 do najnowszej wersji i zobacz czy działa.

No niestety ta wersja jest ostatnia stabilna :slight_smile:

Mój błąd jest nowsza wersja, tylko że niezalecana, ale skomplikuje i sprawdze.

To było z premedytacją? :wink:

No wiec mam ruby 1.9.2-p290 i rails 3.1.0 … dalej to samo.
Albo czegos nie robie, albo nie wiem.

stiopa, jesteś w stanie udostępnić całą aplikacją, np. na githubie?

Co do komplikacji, to tak zamierzalem tak napisac.

No wlasnie nie bardzo bo to praca zawodowa :slight_smile:

Model jest taki jak napisalem. Tablica ma dwie kolumny + kolumne id i to wszystko. Zadnych udziwnien.

Dobra chyba mam coś ze środowiskiem w tej aplikacji. Zrobilem sobie nową aplikacjie czysta i zadziałało. Także dziękuję za pomoc.