Ruby on Rails的Noob问题 - 这是我的情况的一个例子:如果我有模型circle和属性radius,我在哪里进行计算circumference?这是在模型还是控制器中,它看起来如何?circumference需要在我的网站上访问views.
另外,我是否正确认为我不需要创建circumference属于我的模型/数据库的属性,因为它可以从用户输入派生radius?
Emi*_*ily 14
计算派生属性的逻辑绝对属于模型.圆周是圆圈本身的属性,而不是您如何在网络界面中呈现它.
为了从任何地方访问圆周,只需在类上定义一个方法,如下所示:
require 'mathn'
class Circle < ActiveRecord::Base
# assume `radius` column exists in the database
def circumference
Math::PI * 2 * radius
end
end
Run Code Online (Sandbox Code Playgroud)
由于计算圆周的计算量非常便宜,因此您可以根据需要进行计算.如果它涉及更复杂的计算,你不想多次运行,你可以记住它如下:
def circumference
@circumference ||= Math::PI * 2 * radius
end
Run Code Online (Sandbox Code Playgroud)
这将@circumference在第一次调用方法时设置实例变量,然后在每次后续调用时返回第一次计算的结果.如果你这样做,你需要确保设置@circumference为nil半径改变时确保它是准确的.
| 归档时间: |
|
| 查看次数: |
4347 次 |
| 最近记录: |