Pomyślałem, że dobrze byłoby wypełnić pole statusu w tabeli activeRecord za pomocą stałych. Jeśli jednak chodzi o sprawdzenie, czy ten status ma określony status, mam problem.Jak przechowywać i porównywać: symbole w ActiveRecord (Ruby on Rails)
Gdybym wykonać następujące czynności,
e = Mytable.new
e.status = :cancelled
e.save
następnie refind rekord i spróbować porównać swój status symbolu, sprawdzenie się nie powiedzie. Mam trochę wyjścia z konsoli, żeby to pokazać.
irb(main):060:0> e.status.eql?("cancelled")
=> true
irb(main):061:0> e.status.eql?(:cancelled)
=> false
irb(main):062:0> e.status == :cancelled
=> false
irb(main):063:0> e.status == "cancelled"
=> true
irb(main):064:0> e.status == :cancelled.to_s
=> true
Czy jest lepszy sposób na zachowanie statusu w rejestrze? Czy istnieje sposób sprawdzenia, czy aktualna wartość pola jest równa: symbol bez konwersji symbolu: na ciąg znaków? Myślę, że może istnieć operator, którego nie znam.
ecoologic ma dobre rozwiązanie dla Ciebie, ale polecam może kierownicy z dala od tego i być może czyni klasę ze stałymi w nim. Że możesz robić rzeczy takie jak 'e.status = Statusy :: ANULOWANE' i co nie. Wewnętrznie może to być ciąg znaków i nie ma to znaczenia. Wciąż używasz stałych, a błąd będzie się pojawiał, jeśli ta stała nie istnieje i jest czystsza w ten sposób. – MrDanA
dlaczego nie zastąpisz gettera swojej kolumny? – apneadiving
Poprawiłem odpowiedź przed przeczytaniem tych dwóch komentarzy, ale chciałbym powiedzieć, że kocham rozwiązanie @MrDanA, powinieneś napisać odpowiedź i zagłosuję! – ecoologic