现在我使用设计并有两个字段。 fname和lname。
我希望能够将full_name字段放到用户模型中。然后,用户模型将获取full_name字段,并通过使用空格分割来提取fname和lname。如果有多个空格都将转到fname,最后一个项将是最后一个名称,然后使用fname和lname的提取字段保存到用户模型。
这可能不会破坏设计吗?
由于
答案 0 :(得分:4)
当前答案的问题在于它们不会处理三个(+)单词名称,例如Billy Bob Thornton。
'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
答案 1 :(得分:3)
你不需要破解设计,只需在你的用户模型中(或者你用作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
未经测试且脱离我的头顶,但它应该是一个开始......
我不建议存储全名,只是像帮手一样使用它,但这取决于你。