use a different index column for loading models in rails 3 -
use a different index column for loading models in rails 3 -
in app users can store private trades in accounts, such trades visible them.
the trade model looks this:
class trade < activerecord::base scope :by_user, lambda { |user| where(user_id: user.id) unless user.nil? } belongs_to :status belongs_to :user the route looks this:
resources :users resources :trades end so generating urls like:
/users/:user_id/trades/:id/edit currently example, if there 3 trades stored in system, new user, when creating first trade creating trade id = 4, , url find be: /users/2/trades/4
i have trades have new sequence_number column , used in id find trades.
so every user see his/her trades, , numbered starting 1.
to alter parameter passed route, first alter in controller how find trade given :id trade parameter.
class tradecontroller < applicationcontroller before_action :find_trade, [:edit, :show, :update, :destroy] # remove @trade = trade.find(params[:id]) 4 actions private def find_trade @user = user.find params[:user_id] @trade = @user.trades.find_by sequence_number: params[:id] end end then, in trade model, create sequence_number new parameter.
class trade < activerecord::base def to_param sequence_number end end the to_param method of model changes parameter passed in routes trades/:id id sequence_number. so, in illustration above new user, showing first trade /users/2/trades/1 rather /users/2/trades/4.
ruby-on-rails ruby-on-rails-3 routes nested-routes
Comments
Post a Comment