2010-09-09 16 views
5

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.

Odpowiedz