Создание метода FullName в пользовательской модели Devise? - PullRequest
2 голосов
/ 18 июня 2011

сейчас я использую devise и у меня есть два поля. fname и lname.

Мне бы хотелось иметь возможность поставить поле full_name для пользовательской модели. Затем пользовательская модель берет поле full_name и извлекает fname и lname, разделяя их пробелом. если есть более одного пробела, который будет идти к имени fname, а последний элемент будет фамилией, а затем сохранен в пользовательской модели с извлеченными полями для fname и lname.

Возможно ли это без взлома устройства?

Спасибо

Ответы [ 2 ]

4 голосов
/ 28 января 2013

Проблема с обоими текущими ответами состоит в том, что они не обрабатывают три (+) названия слов, таких как Билли Боб Торнтон.

'Billy Bob Thornton'.split(/(.+) (.+)$/)  => ["", "Billy Bob", "Thornton"] 
'Billy Bob Thornton'.split(' ', 2)        => ["Billy", "Bob Thornton"] 

В исходной публикации запрашиваются все, кроме фамилии, чтобы перейти к первомуназвание.Поэтому я бы предложил:

def full_name
  [first_name, last_name].join(' ')
end

def full_name=(name)
  elements = name.split(' ')
  self.last_name = elements.delete(elements.last)
  self.first_name = elements.join(" ")
end
3 голосов
/ 18 июня 2011

Тебе не нужно взламывать устройство, просто сделай это в своей модели «Пользователи» (или любой другой модал, который ты используешь, как твой devise_for

class User
  def fullname
    self.fname << " " << self.lname
  end
  def fullname=(fname)
    names = fname.split(/(.+) (.+)$/)
    self.fname = names[0]  
    self.lname = names[1] 
  end
end

, не проверенный, и не в моей голове,но это должно быть начало ....

я бы не советовал хранить полное имя, просто используйте его как вспомогательную функцию, но это ваше дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...