Ruby on rails 在模型或控制器中的何处写入此方法?

Ruby on rails 在模型或控制器中的何处写入此方法?,ruby-on-rails,ruby,ruby-on-rails-4,model-view-controller,activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Model View Controller,Activerecord,我对rails和MVC都是新手。所以我有一个叫做Bet的模型,它有属性:id,odd,description,output。我想编写方法set\u-won,将结果更改为1,并set\u-lost将结果更改为0 我不太确定在模型或控制器中的何处实现这些方法?您可以在模型中编写此代码,因为它特定于在Bet模型中设置属性。另外,正如Rails所说的“胖模型瘦控制器”,模型更合适。您可以在模型中编写此代码,因为它特定于在Bet模型中设置属性。另外,正如Rails所说的“胖模型瘦控制器”,模型更合适。我建

我对rails和MVC都是新手。所以我有一个叫做Bet的模型,它有属性:id,odd,description,output。我想编写方法
set\u-won
,将结果更改为
1
,并
set\u-lost
将结果更改为
0


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

您可以在模型中编写此代码,因为它特定于在Bet模型中设置属性。另外,正如Rails所说的“胖模型瘦控制器”,模型更合适。

您可以在模型中编写此代码,因为它特定于在Bet模型中设置属性。另外,正如Rails所说的“胖模型瘦控制器”,模型更合适。

我建议您考虑为此使用枚举,即将结果属性的值设置为“无”、“赢”或“输”之一

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


我建议您考虑为此使用枚举,在结果属性上设置值为“无”、“赢”或“输”

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


你应该把它写在模型上

在控制器中,您可以调用操作“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
class BetController
您应该将其写入模型中

在控制器中,您可以调用操作“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
class BetController
为什么我需要编写self.output?我可以只写结果=1,依此类推吗@Menelik Tuckryes您可以编写
output=1
,在这种情况下,这两个语句是等效的。为什么我需要编写self.output?我可以只写结果=1,依此类推吗@Menelik Tuckryes您可以编写
output=1
,在这种情况下,这两个语句是等效的。