1

我正在开发一个 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

当我在控制台中读取属性时,titleize 方法有效。例如:

Region.find(4).name
 => "arizona" 


Region.find(4).name.titleize
 => "Arizona" 

我在这里错过了什么吗?

4

3 回答 3

7

您正在为名称命名,但没有保存它。

string = "hello"
string.titleize
# => "Hello"
string
# => "hello"

string = string.titleize
# => "Hello"
string
# => "Hello"

您需要将标题名称分配给您的名称属性。

def tileize_name
  self.name = self.name.titleize
end
于 2012-08-22T16:57:43.513 回答
0

实际上添加

before_save { self.chefname = chefname.titleize }

在“your_model.rb”中将解决这个问题。

所以看起来像

class Chef < ActiveRecord::Base
  before_save { self.chefname = chefname.titleize }
end

另外值得一看https://github.com/granth/titleize

于 2015-10-07T01:53:17.603 回答
-1

Or you can do this,

before_save { self.name.titleize! }

The bag operator changes and saves the value. Then you won't need before_create.

于 2012-08-22T18:09:28.693 回答