基本的な理解が不足しているように見えるので、ここでいくつかの点に焦点を当ててみます。
count_percentage
あなたのモデルに属しています。それはあなたのUser
記録に結びついていることをする方法です。あなたの例では、コードはUser
レコードでのみ使用できます。したがって、それはあなたのクラスに属していますUser
!
class User < ActiveRecord::Base
def percentage
if self.point > 2999
return ((self.point / 5000.0) * 100 ).to_i
elsif user.point > 1999
return ((self.point / 3000.0) * 100 ).to_i
else
# personally, I'd add a case for points range 0...3000
end
end
あなたが言ったように、その値を「サイドメニュー」に入れたいので、これにより、たとえば@user.percentage
目的のパーセンテージが得られます。
あなたの説明によると(私が正しい方法で理解していれば)、計算された値をユーザーモデルに保存したいと考えています。そして、ここでもう一度説明します。モデル ロジックはモデル クラスに属します。パーセンテージ値を最新の状態に保ちたい場合は、次のようなコールバックを追加します。
class User < ActiveRecord::Base
before_save :store_percentage
def precentage
# your code here
end
private
def store_percentage
self.my_percentage_field_from_my_database = self.percentage
end
end
実際の問題: (db) / (ruby) のuser.point
可能性があるため、実際に計算する前に変換する必要があります。また、それがあなたの状態でブロックを提案した理由です。あなたがより大きいかどうかにかかわらず値を返すには(それが整数であっても..この場合は疑わしい)。NULL
nil
to_i
else
user.point
1999