1. Ruby / Говнокод #11763

    −166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    class User < ActiveRecord::Base
        
      def full_name
      	user_info=User.find(self.id)
      	[user_info.name,user_info.surname].join(" ")
      end
    end

    Получаем полное имя себя

    Запостил: 1101_debian, 13 Сентября 2012

    Комментарии (8) RSS

    • >>User.find(self.id)
      Это прекрасно.
      Ответить
    • надо использовать общее решение.
      self.class.find(self.id)
      можно его еще в ActiveRecord::Base вынести

      а вообще такая конструкция имеет смысл когда есть вероятность что данные в базе изменятся, а объект останется с устаревшими данными. впрочем, это больше проблемы кривой архитектуры.
      Ответить
      • Даже если и так, то Ваша проблема решается просто self.reload.
        Ответить
    • def full_name
      return "#{self.name} #{self.surname}"
      end

      just perfect
      Ответить
      • def full_name
        "#{self.name} #{self.surname}"
        end

        зачем ещё return?
        Ответить
        • Зачем еще self?
          Ответить
          • Для читабельности, чтобы заверить, что это методы, а не локальные переменные. Хотя в однострочнике можно на это и плюнуть...
            Ответить
    • а я пишу
      [name, surname].reject(&:blank?).join(" ")
      Ответить

    Добавить комментарий