A model1 ma ACCOUNT_TYPE, więc używając gem 'enumerated_attributes', zrobiłem model jako takie:Zła liczba argumentów podczas wywoływania .all na płycie, która enum_attr
class MODEL1 < ActiveRecord::Base
enum_attr :account_type, %w(^live demo disabled)
def is_live?
self.account_type == :live
end
def is_not_live?
self.account_type == :demo || self.account_type == :disabled
end
end
Najdziwniejsze I don” Rozumiemy, że gdy wysyłam zapytanie do dowolnego MODEL1 dla takich nasion (jest to błąd, gdy uruchamiam następujące polecenie w konsoli rubymine, ale ten sam błąd 2 na 1 dzieje się podczas rake db: seed):
MODEL1.all.sample
I
MODEL1.all
uzyskać to:
Dealer Load (0.3ms) SELECT "MODEL1".* FROM "MODEL1S"
ArgumentError: wrong number of arguments (2 for 1)
from /.rvm/gems/[email protected]/gems/enumerated_attribute-0.2.16/lib/enumerated_attribute/integrations/active_record.rb:78:in `instantiate'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `block in find_by_sql'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `block in each'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `map'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `find_by_sql'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation.rb:585:in `exec_queries'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation.rb:471:in `load'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation.rb:220:in `to_a'
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation/delegation.rb:49:in `sample'
from (irb):7
from /.rvm/gems/[email protected]/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'
from /.rvm/gems/[email protected]/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'
from /.rvm/gems/[email protected]/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>'
Model Próbuję nasion (gdzie błąd występuje podczas rake db: nasion) jest taki:
model2 = Fabricate(:MODEL2, name: "Any MODEL2 Name #{n}", cost: n, MODEL1: MODEL1.all.sample)
w modelu MODEL2
belongs_to :MODEL1
aw modelu model1
has_many :MODEL2s
w migracji, MODEL2
t.references :MODEL1
w migracji, model1
t.enum :account_type
Jeśli istnieje łatwiejszy sposób określić account_types dla modelu MODEL1, proszę dać mi znać, po prostu trzeba być w stanie powiedzieć MODEL1.all.sample lub MODEL1.all
Spojrzałem na kodzie źródłowym na górze ślad stosu (patrz https: // github .com/jeffp/enumerated_attribute/blob/84221b872f7f71152994b212520c833742a263e3/lib/enumerated_attribute/integrations/active_record.rb) i rzeczywiście istnieje wywołanie metody z dwoma argumentami w wierszu 78, ale nie mogę zrozumieć, jak moje życie wywoływana metoda ('write_enumerated_attribute') mogła zostać zdefiniowana za pomocą jednego. –
Czy łatwiej byłoby zdefiniować account_type inaczej dla MODEL1? Czuję, że powinien to być wyliczony atrybut, ale jeśli istnieje równie odpowiednie rozwiązanie, które nie powoduje tego problemu, jestem szczęśliwy, aby spróbować? – JPEasy
Twój klejnot to 0.2.16, a na Githubie to 0.3.1beta. Czy możesz spróbować ulepszyć swój klejnot? – j03w