1

いくつかの日付を保存し、基本的な条件チェックを実行する単純な Rails サイトを作成しています。以下にいくつかの方法を書きましたが、それらをより効率的にすることができると言われました。私は頭を悩ませてきましたが、これを行う方法がわかりません。entry.find をグローバルにする必要がありますか? または、より明白な解決策がありますか?前もって感謝します

 def name
     @fname = params[:fst_name]
     @lname = params[:lst_name]
     @entry = Entry.create({:first_name => @fname, :last_name =>  @lname})
  end

  def attribs
     @person = Entry.find(:last)
     @fname = @person.first_name
     @lname = @person.last_name
     @person.update_attributes({:address => params[:st_name], 
         :salary => params[:salary], :loan => params[:loan], 
         :loan_reason => params[:reason]})
     if !@person.address.nil? then render "show" end
  end

 def show
     @person = Entry.find(:last)
 end

  def modify
     @person = Entry.find(:last)
     @fname = @person.first_name
     @lname = @person.last_name
     @entry = Entry.create({:first_name => @fname, :last_name =>  @lname,  
                            :salary => params[:salary], :loan => params[:loan]})
  end

 def borrow
     @person = Entry.find(:last)
     if !@person.salary.nil? then
       if (@person.salary *  3) < @person.loan
            then @message = "You have asked for too much"
       else  @message = "No problem" 
       end
    else @message = "empty record?"
    end
 end


end
4

1 に答える 1

5
  • 繰り返し使用する場合は before_filter を使用してください@person = Entry.find(:last)

  • すべての変数をインスタンス変数にしないでください: for :ビューnameにアクセスする必要はありません。必要に応じてアクセスできます。@fname@entry.first_name

  • if theninlineを使用しないでくださいdo_something if conditionthenまた、他の からも削除しますif

  • Event作成物をモデルに移動したい場合があります。何かのようなものself.create_from_person_and_modify_params

  • Event.lastの代わりに使用Event.find(:last)

  • if @person.salaryの代わりに使用if !@person.salary.nil?

  • if (@person.salary * 3) < @person.loan条件をモデルに移動します。何かのようなものasks_for_reasonable_raise?

于 2012-11-23T20:47:27.100 に答える