0

我开发了一个普通的基于浏览器的 Rails 游戏应用程序。我现在将 CloudMailin 添加到组合中,通过电子邮件有效地公开替代界面。

作为一个有代表性的例子,考虑一下我现有的create操作:

class GamesController < ApplicationController

  def create
    @game = Game.params[:new]

    if @game.random_create
      # Asked to create a game using random choices.
      # Make the random choices, then present it to the user for tweaking
      @game.expand_random_choices

      render :action => new
    else
      # Fully specified. Create the game
      begin
        @game.save!

        # ...other work including DB operations ...

        flash[:notice] += 'Game was successfully created.'
        redirect_to :action => :play, :id => @game
      rescue ActiveRecord::RecordInvalid
        @game.valid?
        render :action => 'new'
      end
    end
  end
end

我现在有我的 PbemController 来处理 Cloudmailin 电子邮件:

class PbemController < ApplicationController

  # Handle inbound email
  def handle
    if email_is_a_game_creation
    ...
    end

    render :text => "Handled"
  end
end

createPbemController? _ 我唯一真正的选择是将每个“共享”动作提取到一个模块中,/lib' and并将其包含在每个控制器中吗?

4

1 回答 1

1

通常最好的选择是尽可能多地移动到模型中。这样,可以从控制器执行的任何代码也可以从处理程序执行。

您也许可以制作这样的方法create_or_build_random,这可能会有所帮助?

于 2011-08-10T13:56:53.310 回答