加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails – 我应该在哪里计算派生属性?

发布时间:2020-12-16 21:41:26 所属栏目:百科 来源:网络整理
导读:Ruby on Rails的Noob问题 – 这是我的情况的一个例子:如果我有模型圈和属性半径,我在哪里做周长的计算?这将在模型或控制器中,它可能如何看?周长需要在我的意见中可以访问. 此外,我认为我不需要将周长作为我的模型/数据库的一部分的属性,因为它可以从用户
Ruby on Rails的Noob问题 – 这是我的情况的一个例子:如果我有模型圈和属性半径,我在哪里做周长的计算?这将在模型或控制器中,它可能如何看?周长需要在我的意见中可以访问.

此外,我认为我不需要将周长作为我的模型/数据库的一部分的属性,因为它可以从用户输入半径派生?

解决方法

用于计算派生属性的逻辑绝对属于模型.圆周是圆圈本身的属性,而不是您如何将其呈现在Web界面中.

为了从任何地方访问圆周,只需在类上定义一个方法,如下所示:

require 'mathn'
class Circle < ActiveRecord::Base
  # assume `radius` column exists in the database

  def circumference
    Math::PI * 2 * radius
  end
end

由于计算周长很便宜,您可以根据需要进行计算.如果它是涉及更多复杂的计算,你不想多次运行的事情,你可以记录如下:

def circumference
  @circumference ||= Math::PI * 2 * radius
end

这将在首次调用该方法时设置@circumference实例变量,然后在每个后续调用中返回第一次计算的结果.如果你这样做,当半径改变以确保它是准确的时,你需要确保将@circumference设置为nil.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读