0

在我的用户模型中,我在创建或保存用户之前调用 titleize 方法,如下所示:

before_save :titleize, :to_lower
before_create :titleize, :to_lower 

def titleize
    self.first_name = self.first_name.titleize
    self.last_name = self.last_name.titleize
    self.pursuits = self.pursuits.titleize
end

哪个工作得很好,但是我有更多我想要命名的用户字段,在用户实际注册之前无法访问,例如 bio 或 city。但是,如果我将这些放入我的 titleize 方法中,我会收到注册错误,因为这些字段实际上并没有出现在注册表单上。那么如何在不中断注册的情况下为这些其他字段命名呢?

4

2 回答 2

0

您可以像这样添加 if 条件:-

before_save :titleize, :to_lower
before_create :titleize, :to_lower 

def titleize
  self.first_name = self.first_name.titleize
  self.last_name = self.last_name.titleize
  self.pursuits = self.pursuits.titleize
  if self.bio?
    self.bio = self.bio.titleize
  end
end
于 2013-10-04T20:29:51.450 回答
0

这是我的看法:

  def titleize
    fields_to_titleize.each { |f| self[f] = self[f].titleize }
  end

  def fields_to_titleize
    fields = [:first_name, :last_name, :pursuits, :bio, :city]
    fields.keep_if { |f| self.respond_to?(f) }
  end
于 2013-10-04T20:32:52.397 回答