ruby on rails 3 - FriendlyId suggest -


i want use friendlyid achieve localhost3000/users/edu/profile not know how it! have these models user , userprofile

class user < activerecord::base   has_one :user_profile, :dependent => :destroy   extend friendlyid   friendly_id :name, :use => :slugged end    class userprofile < activerecord::base   attr_accessible :user_id, :name, :surname, :nickname   belongs_to :user  end 

how load in name of user name of userprofile? , how update name of user when name of userprofile changes?

for first used

class user < activerecord::base ...    def name     if user_profile       "#{user_profile.name}"     end     end 

but can't make change when update or create new profile in userprofile.

using ruby 1.9.3 , rails 3.2.13.

if understood correctly, problem sharing data between models, not friendlyid.

it seems delegate best bet here. it's method in activesupport allows 1 model expose model's methods own.

class user < activerecord::base   delegate :name, :name=, :to => :user_profile end 

reference: http://api.rubyonrails.org/classes/module.html#method-i-delegate

the reason delegate both :name , :name= former method allows read attribute (getter), while latter allows write (setter).

before making these changes you'll want run migration remove name field users table in database, since on you'll using data in other model.

rails g migration remove_name_from_users name:string 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -