2017-02-20 10 views
1

私はコードをもっと簡単かつ効率的にしたいと思っています。私のコードはRuby on Rails MySQLクエリの混乱

class Employee < ApplicationRecord 
    mount_uploader :image, AvatarUploader 

    def self.search(search) 
     if search 
     where(('(name LIKE ? OR name = ?) AND (employee_type = "SE" OR employee_type = "OP")'), "%#{search}%", "") 
    else 
     unscoped 
    end 
    end 
end 

(モデルでは)このように書きますと、私のコントローラは、このように書きます:WOUこの

class EmployeesController < ApplicationController 
    before_action :set_employee, only: [:show, :edit, :update, :destroy] 
    # GET /employees 
    # GET /employees.json 
    helper_method :sort_column, :sort_direction 

    def index 
    if params[:employee_type].present? 
     @employees = Employee.search(params[:employee_type]) 
    elsif params[:search].present? 
     @employees = Employee.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page]) 
    else 
     @employees = Employee.all 
    end 
    end 
end 

ような何かを行うことによって開始することができます

class EmployeesController < ApplicationController 
    before_action :set_employee, only: [:show, :edit, :update, :destroy] 
    # GET /employees 
    # GET /employees.json 
    helper_method :sort_column, :sort_direction 

    def index 
    @employees = Employee.all 
    @employees = Employee.search(params[:employee_type]) 
    @employees = Employee.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page]) 
    end 
end 
+0

@xdazzありがとう! –

+0

コントローラーであなたの変数に乗っているように見える@employees 3回 – MZaragoza

+0

@MZarogaza ああ、私は参照してください。私はRoRでちょうど新しいです:D –

答えて

1

今あなたが乗るの上に文句を言いませんあなたの変数

+0

ありがとう@Mzaragoza!コントローラーに条件文を入れることができるかどうかわからなかった:Dありがとう! –

+0

@reynantedai​​tol私は助けてうれしいです:) – MZaragoza