Jestem zadowolony z używania atrybutów wirtualnych w modelach Railsowych, jeśli są to ciągi znaków, ale chciałbym również użyć innych typów atrybutów, takich jak daty lub wartości logiczne, dzięki czemu mogę używać takich helperów jak date_select do ustawiania atrybutów wirtualnych.Jak mam aktywny rekord traktować wirtualne atrybuty, takie jak prawdziwe atrybuty?
Czy jest to dobry sposób na zrobienie tego?
W obecnej formie, przy użyciu date_select pomocnika na atrybucie wirtualnym podnosi:
1 error(s) on assignment of multiparameter attributes
Chociaż jeśli chcę logiczną atrybut I skończyć z @v_attribute = "true"
, zamiast @v_attr = true
.
znalazłem przykład gdzieś, że wydawało się działać:
class MyModel
#virtual attribute
attr_accessor :v_date_field
attr_accessible :v_date_field
columns_hash["virtual_date_field"] = ActiveRecord::ConnectionAdapters::Column.new("vi_date_field", nil, "date")
end
Ale ja naprawdę nie wiem, dlaczego to działa, czy ma to żadnych skutków ubocznych, i wydaje się, jak hack.