特定の測定値(高さ、重量、neck_circumferenceなど)を実行するモデルがあるRailsアプリを作成しています。
メートル法と単位系の両方で機能するようにしたいと思います。
私のモデルには、メートル法またはインペリアル法の両方の可能性があるmeasure_unit属性があります。すべての測定値は、メートル法のデータベースに保存されます。
私はsimple_formgemを使用していますが、ユーザーがインペリアルシステムを使用した場合にデータがオンザフライで変換されるように、ビューを実装する方法がわかりません。
<% if @customer.measure_unit.eql? "metric" %>
<%= f.input :height %></br>
<% else %>
...
<% end %>
どうすれば空白を埋めることができますか?
編集-実用的な解決策を見つけました
「height_in_cm」や「height_in_in」などの仮想属性を使用して、データベースのエントリをmm単位で保存することにしました。
モデルのコードは次のとおりです。
def height_in_cm
height / 10
end
def height_in_cm=(height)
self.height = height.to_f * 10
end
def height_in_in
height * 0.039370
end
def height_in_in=(height)
self.height = height.to_f / 0.039370
end
そして、ビューのコード:
<% if @customer.measure_unit.eql? "imperial" %>
<%= f.input :height_in_in %></br>
<% else %>
<% if @customer.measure_unit.eql? "metric" %>
<%= f.input :height_in_cm %></br>
<% end %>
<% end %>