2017-04-14 40 views
0

我已经开发了一个管理页面的代码,在轨道上的红宝石crud。但我有疑问。这个代码可以以任何方式改进吗?在设计模式,良好做法和等Ruby on Rails的设计模式和良好做法

而且千卡,我也分开了AdminController类CRUD操作。这被认为是一种很好的做法吗?或者有什么方法可以进一步改进?谢谢。

# app/controllers/game_controller.rb 
class GameController < ApplicationController 
    def create 
    Game.create(game_params) 
    end 

    def update 
    game = Game.find(params[:id]) 
    if (game.update_attributes(game_params)) 
     return true 
    end 
    return false 
    end 

    def read 
    game = Game.find(params[:id]) 
    end 

    def delete 
    if (Game.find(params[:id]).destroy) 
     return true 
    else 
     return false 
    end 
    end 

    private 

    def game_params 
     params.require(:game).permit(:description,:name,:category,:status,:boxshot) 
    end 
end 


# app/controllers/admin_controller.rb 
class AdminController < ApplicationController 
    before_action :require_logged_in_user 
    before_action :define_action 

    def index 
    @games = Game.all 
    @admin = get_admin_details() 
    end 

    def read 
    render :json => @action.read 
    end 

    def update 
    if ([email protected]) 
     render :text => "false"  
    end 
    render :text => "true" 
    end 

    def delete 
    if([email protected]) 
     render :text => "false" 
    end 
    render :text => "true" 
    end 

    def logout 
    reset_session 
    redirect_to(:controller => 'login', :action => 'view') 
    end 

    private 

    def define_action 
     @action = GameController.new() 
     @action.params = params 
     I18n.locale = cookies['language'] 
    end 

    def get_admin_details 
     admin = User.find(require_logged_in_user()) 
    end 

    def require_logged_in_user 
     if(session[:user_id]) 
     return session[:user_id] 
     else 
     redirect_to(:controller => 'login', :action => 'view') 
     end 
    end 
end 
+1

快速第一眼后,跳转右出的第一件事是,缩进和空白都是一团糟并违反几乎每一个Ruby风格指南那里。 –

+0

是的,当我把它粘贴在这里时,我真的搞砸了。我会尽快编辑它。 –

+0

有几件事情可以改进/修复。我建议先通过本指南(https://github.com/bbatsov/rails-style-guide),更新您的代码,然后再回来获取更多反馈。 – Gerry

回答

3

说实话,还有一点可以改进。这里有GameController

class GameController < ApplicationController 
    before_action :find_game, only: [:update, :show, :delete] 

    def new 
    @game = Game.new 
    end 

    def create 
    @game = Game.new(game_params) 

    if @game.save 
     redirect_to game_path(@game) 
    else 
     render :new 
    end 
    end 

    def edit 
    end 

    def update  
    if @game.update(game_params) 
     redirect_to game_path(@game) 
    else 
     render :edit 
    end 
    end 

    def show 
    end 

    def delete 
    if @game.destroy 
     redirect_to games_path 
    else 
     render :show 
    end 
    end 

    private 

    def find_game 
    @game = Game.find(params[:id]) 
    end 

    def game_params 
    params.require(:game).permit(:description, :name, :category, :status, :boxshot) 
    end 
end 

我会花一些时间来多一点彻底了解了Rails的基本知识我服食。检查出Railscasts。它更旧,但仍然是很好的信息。任何溢价剧集都可以在YouTube上找到。

你也可以看看风格指南的使用他们提供的建议。

不管你做什么,最重要的是要保持一致。保持相同的缩进量,同一类的结构,相同的任务和条件结构等

要回答你的第二个问题,你要为每一个新的CRUD操作一个新的控制器。不要试图在一个控制器中使用大量的功能。保持简单,线条便宜。

+0

对应的最后一段Rails的口头禅是“高脂模型,瘦控制器”,虽然目前的趋势似乎对“骨感控制器移动,简单模型,许多服务“。 –