Ruby on Rails CRUD

时间:2014-07-26 00:08:48

标签: ruby-on-rails ruby rest crud

我正在构建一个允许用户创建旅行的应用程序。但是,出于某种原因,我不确定我是否真正利用了rails的功能,或者我在代码中是多余的。在下面的示例中,您将看到一个行程控制器,可以在其中创建行程然后显示行程。一切正常,我只想确保以最小的方式解决这个问题。

class TripsController < ApplicationController

def new
    @user = User.find(session[:id]) 
    @trip = Trip.new 
end

def create
    @trip = Trip.create(trip_params)
    @user = User.find(session[:id]) 

    redirect_to user_trip_path(@user.id, @trip.id) 
end

def show
    @trip = Trip.find(params[:id])
end

private

def trip_params
    params.require(:trip).permit(:where, :when, :price_per_person)
end

end

1 个答案:

答案 0 :(得分:0)

将其收紧,&#34;将行程范围限定为用户&#34;。

class TripsController < ApplicationController
  before_filter :find_user 

  def new
    @trip = @user.trips.build #assuming a User has many trips
  end

  def create
    @trip = @user.trips.create(trip_params) #you may want to add an if else here to catch bad trips

    redirect_to user_trip_path(@user.id, @trip.id) 
  end

  def show
    @trip = @user.trips.find(params[:id])
  end

  private

  def trip_params
    params.require(:trip).permit(:where, :when, :price_per_person)
  end
  def find_user
     @user = User.find(session[:id]) # or current_user if you are using popular authentication gems
  end
end

它也是关于可读性的,而不仅仅是更少的线条。