15

基になるデータベーステーブルから属性を取得するエージェントモデルがあります。ただし、ある特定のコントローラーアクションについては、ビューに渡す前に、エージェントレコードにいくつかの「一時的な」属性を追加したいと思います。

これは可能ですか?

4

1 に答える 1

23

はい、モデルをその場で拡張できます。例えば:

# GET /agents
# GET /agents.xml
def index
  @agents = Agent.all

  # Here we modify the particular models in the @agents array.

  @agents.each do |agent|
    agent.class_eval do
      attr_accessor :foo
      attr_accessor :bar
    end
  end

  # And then we can then use "foo" and "bar" as extra attributes

  @agents.each do |agent|
    agent.foo = 4
    agent.bar = Time.now
  end

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @agents}
  end
end

ビューコードでは、他の属性fooと同じように参照できます。bar

于 2012-02-09T16:22:39.170 に答える