在模型或控制器中何处编写此方法?

时间:2015-11-29 14:38:59

标签: ruby-on-rails ruby ruby-on-rails-4 model-view-controller activerecord

我是rails的新手,而MVC则更多。所以我有一个名为Bet的模型,它有属性:id,odd,description,outcome。我想编写方法set_won,将结果更改为1set_lost,这会将结果更改为0

我不太确定在模型或控制器中实现这些方法的位置?

3 个答案:

答案 0 :(得分:3)

我建议您考虑使用枚举,将结果属性的值设置为"无","赢得"或"丢失"

enum将为您提供getter和setter方法,以及列出所有赢或输的赌注的范围。

http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html

答案 1 :(得分:2)

您应该在模型中写下它。

在你的控制器中你会调用一个动作“BetController#update”或者你想要的任何东西,然后做这样的事情:

class BetController < ApplicationController
   ...
   def update
     #do somestuff
     @bet.set_won or @bet.set_lost
   end

  -------

  class Bet < ActiveRecord::Base
    #some stuff up here
    def set_won
      self.outcome = 1
    end

    def set_lost
      self.outcome = 0
    end
  end

答案 2 :(得分:0)

您可以在Model中编写此代码,因为它特定于在Bet Model中设置属性。另外,正如Rails所说的“Fat Model Skinny Controller”,模型会更合适。