我正在开发一个rails应用程序,我试图在保存或创建属性之前对其进行标题化。我很确定我已经正确地完成了这个,但是,每当我尝试在我的rails控制台中创建一个新记录时,标题化都没有发生。这是我的型号代码:
class City < ActiveRecord::Base
attr_accessible :name, :region_id
belongs_to :region
before_save :tileize_name
before_create :tileize_name
def tileize_name
self.name.titleize
end
end
当我在控制台中读取属性时,标题化方法有效。例如:
Region.find(4).name
=> "arizona"
Region.find(4).name.titleize
=> "Arizona"
我在这里遗漏了什么吗?
答案 0 :(得分:6)
您标题名称但不保存名称。
string = "hello"
string.titleize
# => "Hello"
string
# => "hello"
string = string.titleize
# => "Hello"
string
# => "Hello"
您需要将标题化名称指定给您的名称属性。
def tileize_name
self.name = self.name.titleize
end
答案 1 :(得分:0)
实际添加
Intellisense
;&#34; your_model.rb&#34;会解决这个问题。
所以它看起来像
before_save { self.chefname = chefname.titleize }
答案 2 :(得分:-1)
或者你可以这样做,
before_save { self.name.titleize! }
行李操作员更改并保存该值。那么您将不需要 before_create 。