0

属性を持つUserモデルがあるとしましょう。namea@userに名前がある場合は'CAIO'、humanizeメソッドを呼び出してより適切にすることができます。

@user.name          =======> CAIO
@user.name.humanize =======> Caio

しかし、私は怠け者であり、humanize毎回電話をかけたくはありません@user.name。人間化されたバージョンを返したいのです。

今、私はヘルパーメソッドまたは次のようなモデルでそれを行うことができることを知っています

def h_name
  self.name.humanize
end

@user.nameしかし、このようにすると、アプリ内のすべてを変更する必要があり@user.h_nameます...そして私は怠惰です!!! :-)

モデルで直接宣言する方法はありませんが、それnameを呼び出すために使用しますか?nameさらに良いのは、私のすべてのモデルで機能するものになるでしょう!

4

3 に答える 3

2

ドレーパーをチェックしてください。このgemは、オブジェクト指向の方法でビューロジックをバンドルするデコレータ(プレゼンターによく似ています)を提供します。また、Ryan Batesは、優れたRailsCastonDraperをまとめました。

于 2012-08-21T13:57:10.967 に答える
1

モデルにbefore_saveを追加できます。

before_save:h_name

def h_name self.name = self.name.humanize end

于 2012-08-21T14:00:51.463 に答える
1

この同様の質問は、これを行うためのいくつかの方法を説明しています。

1つの可能性は次のとおりです。

class User < ActiveRecord::Base
    def name
        super().humanize
    end
end
于 2012-08-21T14:13:40.683 に答える