2015-06-23 9 views

Antwort

2

Zuerst dachte ich darüber etwas wie:

class Model 
    delegate :begin, :end, to: :range, prefix: true, allow_nil: true # Replace :range with your field name 
end 

Methoden zu erhalten: range_begin, range_end. Ich habe die Dokumentation überprüft und diese Methoden sind nur lesbar.

So müssen Sie auch Setter:

class Model 
    delegate :begin, :end, to: :range, prefix: true, allow_nil: true 

    def range_begin=(value) 
    self.range = Range.new(value, (range_end || value)) 
    end 

    def range_end=(value) 
    self.range = Range.new((range_begin || value), value) 
    end 
end 

Wenn Sie nicht || in Setter verwenden Sie, Sie dann ArgumentError: bad value for range auf leeren Datensatz erhalten. In Ihren Ansichten können Sie normale Eingaben für die Felder range_begin und range_end verwenden.

Verwandte Themen