Ruby on rails Rails设计标题化注册期间不存在的用户字段
在我的用户模型中,我在创建或保存用户之前调用titleize方法,如下所示:Ruby on rails Rails设计标题化注册期间不存在的用户字段,ruby-on-rails,model,devise,title,Ruby On Rails,Model,Devise,Title,在我的用户模型中,我在创建或保存用户之前调用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.ti
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
这很好,但我有更多的用户字段,我想标题化,不能访问,直到用户实际注册,如生物或城市。但是如果我把这些放进我的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
if self.bio?
self.bio = self.bio.titleize
end
end
以下是我的看法:
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
您收到了哪些错误?提交了答案。如果这不是你想要的,你能澄清一下“在用户真正注册之前不能访问”吗。这是否意味着模型无法访问该属性,或者该属性返回nil或其他条件?我想问您为什么要在这里修改用户输入。标题化有什么意义?只是为了让名字在某处显示时看起来更好吗?如果是这样,为什么不在视图中调用titleize,或者创建一个模型方法,比如
def display\u name;self.first_name.titleize+“”+self.last_name.titleize;结束
?我得到的是未定义的方法“titleize”,但我只是将它们包装在if语句中,现在可以使用了。