在模型或控制器中进行计算

奥立佛

我正在构建一个减肥应用程序。为此,我的应用中的每个用户has_one :profilehas_many :weights每个配置文件belongs_to :pal为了使我的应用正常工作,我需要一个名为SMR的值,该值基本上是一个公式,该公式将用户的大小,年龄和性别(全部来自配置文件表),用户的当前体重(来自体重表)以及朋友表。

我可以在profiles_controller.rb表演动作中计算SMR并将其显示在个人资料show.html.erb中。

我现在有两个问题:

  1. profiles_controller.rb表演动作中进行此计算是否正确,还是应该在profile.rb模型中进行计算?如果我应该在模型中执行此操作:如何执行(代码应如何显示)?
  2. 稍后,我还将在我的应用中需要SMR值作为其他计算的变量。我如何实现这一点(如果它是在配置文件控制器/模型中计算出来的,但以后需要在其他地方使用)?

我对Rails领域还很陌生,所以也许我的问题真的是菜鸟问题。

profile.rb

class Profile < ActiveRecord::Base
  belongs_to :user
  belongs_to :pal
  belongs_to :goal


  def age
    if birthdate != nil
      now = Time.now.utc.to_date
      now.year - birthdate.year - (birthdate.to_date.change(:year => now.year) > now ? 1 : 0)
    else
      nil
    end
  end
end 

体重

class Weight < ActiveRecord::Base
  belongs_to :user
end

pal.rb

class Pal < ActiveRecord::Base
  has_many :profiles
end

profiles_controller.rb(仅显示操作)

  def show
    @pal = @profile.pal
    @goal = @profile.goal
    @current_weight = Weight.where(:user_id => current_user.id).order(:day).last

    if @profile.gender == 0
      @smr = (10*@current_weight.kilograms+6.25*@profile.size-5*@profile.age+5)*@pal.value
    elsif @profile.gender == 1
      @smr = (10*@current_weight.kilograms+6.25*@profile.size-5*@profile.age-161)*@pal.value
    else
      nil
    end
  end
索林

我认为您应该创建一个单独的类,或者也可以对概要文件模型进行操作

class SmrCalculator
  def initialize(profile, user)
     @profile = profile
     @user = user
  end

  def get_smr
    @pal = @profile.pal
    @goal = @profile.goal
    @current_weight = Weight.where(:user_id => @user.id).order(:day).last

    if @profile.gender == 0
      @smr = (10*@current_weight.kilograms+6.25*@profile.size-5*@profile.age+5)*@pal.value
    elsif @profile.gender == 1
      @smr = (10*@current_weight.kilograms+6.25*@profile.size-5*@profile.age-161)*@pal.value
    else
      nil
    end
  @smr
  end

end

并在控制器的show方法上调用此类,如下所示:

@smr_calculator = SmrCalculator.new(@profile, current_user)
@smr = @smr_calculator.get_smr

并将此类作为smr_calculator.rb添加到models文件夹中

因此,您需要在应用程序中的任何地方@smr都可以使用个人资料和当前用户来调用此类

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

截止日期后禁止编辑和更新-是否在模型或控制器中进行?

来自分类Dev

如何从控制器访问模型数据以在Ember的视图中进行渲染?

来自分类Dev

一个控制器中有多个模型,可在Codeigniter中进行编码实践

来自分类Dev

如何从控制器访问模型数据以在Ember的视图中进行渲染?

来自分类Dev

在控制器构造函数与表单请求中进行授权

来自分类Dev

AngularJS传递变量以在控制器中进行过滤

来自分类Dev

使用Kaminari在Rails控制器中进行分页

来自分类Dev

如何在angularjs控制器中进行反向过滤

来自分类Dev

angularjs如何在控制器中进行方法调用

来自分类Dev

在不带URL控制器的Rails中进行路由

来自分类Dev

控制器未返回模型中的计算属性

来自分类Dev

如何对返回模型的控制器进行单元测试?

来自分类Dev

对在laravel控制器中引用模型进行故障排除

来自分类Dev

试图从控制器通过模型对服务进行$ resource调用,无法将响应返回给控制器

来自分类Dev

使用JS / jQuery / AJAX和控制器在Java中进行分页

来自分类Dev

如何在控制器单元测试中进行REST API调用?

来自分类Dev

在Angular控制器中进行Restangular POST之前更改表单数据

来自分类Dev

在Visual Studio中进行FTP发布时,将为控制器创建哪个dll

来自分类Dev

在控制器或服务层中的Spring MVC中进行验证?

来自分类Dev

在同一控制器上的Web Api中进行多个POST调用的最佳实践

来自分类Dev

从控制器传递数组二维以在PHP中进行查看

来自分类Dev

如何获取会话变量值并在控制器变量中进行设置?

来自分类Dev

如何通过使用Laravel中控制器的数组变量在视图中进行分页

来自分类Dev

仅授权控制器允许在.net Core中进行匿名访问

来自分类Dev

Grails:为了在URL映射中进行错误处理,在控制器中设置了什么?

来自分类Dev

如何获取会话变量值并在控制器变量中进行设置?

来自分类Dev

将控制器应用于模板而无需在Meteor中进行路由

来自分类Dev

解决服务中的承诺而无需在控制器中进行回调

来自分类Dev

如何使用“模板”控制器制作页面并在VoltRb中进行查看

Related 相关文章

  1. 1

    截止日期后禁止编辑和更新-是否在模型或控制器中进行?

  2. 2

    如何从控制器访问模型数据以在Ember的视图中进行渲染?

  3. 3

    一个控制器中有多个模型,可在Codeigniter中进行编码实践

  4. 4

    如何从控制器访问模型数据以在Ember的视图中进行渲染?

  5. 5

    在控制器构造函数与表单请求中进行授权

  6. 6

    AngularJS传递变量以在控制器中进行过滤

  7. 7

    使用Kaminari在Rails控制器中进行分页

  8. 8

    如何在angularjs控制器中进行反向过滤

  9. 9

    angularjs如何在控制器中进行方法调用

  10. 10

    在不带URL控制器的Rails中进行路由

  11. 11

    控制器未返回模型中的计算属性

  12. 12

    如何对返回模型的控制器进行单元测试?

  13. 13

    对在laravel控制器中引用模型进行故障排除

  14. 14

    试图从控制器通过模型对服务进行$ resource调用,无法将响应返回给控制器

  15. 15

    使用JS / jQuery / AJAX和控制器在Java中进行分页

  16. 16

    如何在控制器单元测试中进行REST API调用?

  17. 17

    在Angular控制器中进行Restangular POST之前更改表单数据

  18. 18

    在Visual Studio中进行FTP发布时,将为控制器创建哪个dll

  19. 19

    在控制器或服务层中的Spring MVC中进行验证?

  20. 20

    在同一控制器上的Web Api中进行多个POST调用的最佳实践

  21. 21

    从控制器传递数组二维以在PHP中进行查看

  22. 22

    如何获取会话变量值并在控制器变量中进行设置?

  23. 23

    如何通过使用Laravel中控制器的数组变量在视图中进行分页

  24. 24

    仅授权控制器允许在.net Core中进行匿名访问

  25. 25

    Grails:为了在URL映射中进行错误处理,在控制器中设置了什么?

  26. 26

    如何获取会话变量值并在控制器变量中进行设置?

  27. 27

    将控制器应用于模板而无需在Meteor中进行路由

  28. 28

    解决服务中的承诺而无需在控制器中进行回调

  29. 29

    如何使用“模板”控制器制作页面并在VoltRb中进行查看

热门标签

归档