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

Popular posts from this blog

model view controller - MVC Rails Planning -

ruby on rails - Devise Logout Error in RoR -

html - Submenu setup with jquery and effect 'fold' -