使用Rails 3保存前用空格替换空格

Jon*_*ark 13 ruby-on-rails-3

我正在尝试将名称保存到数据库,并且单个单词(firstname)工作正常,但是当用户同时输入firstname和lastname时,我希望Rails将其作为firstname-lastname而不是firstname lastname(之间的空格)保存到数据库中.

我知道我也许应该使用之前的创建过滤器,但我不确定这需要怎么样.我希望验证工作,即没有两个人应该能够使用相同的名称.

我正在使用Rails 3.

IAm*_*NaN 46

您可以parameterize在字符串上使用ActiveSupport的inflector方法.

name = 'john smith'     # => john smith
name.parameterize       # => john-smith
Run Code Online (Sandbox Code Playgroud)

此外,参数化可以选择用于分词,因此您可以使用下划线替换短划线,如下所示:

name.parameterize("_")  # => john_smith
Run Code Online (Sandbox Code Playgroud)

使用参数化的一个优点是它将字符规范化为拉丁语,所以......

name = "jöhanne såltveç"
name.parameterize       # => johanne-saltvec
Run Code Online (Sandbox Code Playgroud)


小智 4

为什么不在数据库中只包含first_name和last_name列,并创建自己的验证规则以确保组合是唯一的(http://guides.rubyonrails.org/active_record_validations_callbacks.html#creating-custom-validation-methods )。您还应该在数据库中的这两列上创建唯一索引。