2

まず、この単純な質問で申し訳ありません。多くの時間を費やした後、何の助けもなく見つけることをあきらめました:(。

簡略化すると、次の状況があります。ratesrateを持つ1つのテーブルでconverted、ルビー内の足場ステートメントで生成されます。列rateはビューに表示convertedされますが、アプリケーションのバックグラウンドでのみ使用される列は表示されません。

ここでの目標は、フィールドで指定されたレートをユーザーに尋ねてrate、アプリケーションが を計算し、convertedこの値をデータベースに保存できるようにすることです。これは簡単な計算です: converted= 1 / レート。

ご意見をお聞かせください :)。

4

2 に答える 2

3

これを行う方法はたくさんあります。たとえば、ロジックをモデル (おそらく最もクリーン)、コントローラー、および非表示フィールドと JavaScript を使用してビュー自体に配置することなどです。

コールバックを使用してモデル レベルで実行します。たとえば、これを rates.rb モデルに追加します。

before_save :calculate_converted_rate

private

def calculate_converted_rate
  self.converted = 1.0 / self.rate
end

コードが示唆するように、 Rates インスタンスが保存される前に、変換されたフィールドを rate フィールドの逆数に毎回設定します。

ActiveRecord コールバックの詳細: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

于 2012-07-30T08:30:03.937 に答える