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

これは問題なく動作しますが、バイオや都市など、ユーザーが実際に登録されるまでアクセスできない、タイトルを付けたいユーザーフィールドが他にもあります。しかし、これらを 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 に答える