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如果需要,你可以这样做。

  • 不要使用 inline if then,使用do_something if condition. 也then从你的其他ifs 中删除。

  • 您可能希望将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 回答