Получить имя пользователя в другой модели для пользовательского слага friendlyId

Я использую Дружественный ID. На данный момент я создаю собственный слаг следующим образом:

class Photo < ActiveRecord::Base
extend FriendlyId
friendly_id :photo_by_author, :use => :slugged

 def photo_by_author
   "#{title} by #{user_id}"
 end

belongs_to :user

end

А мой слаг такой: /photo-title-by-7 Вместо 7 я хочу получить username из user = 7

Как я могу это сделать?


person Igor Martins    schedule 16.08.2014    source источник


Ответы (1)


Делегировать

Как насчет старого доброго метода .delegate:

#app/models/photo.rb
Class Photo < ActiveRecord::Base
   belongs_to :user
   delegate :username, to: :user
end 

Это позволит вам позвонить:

def photo_by_author
   "#{title} by #{username}"
 end
person Richard Peck    schedule 16.08.2014