基になるデータベーステーブルから属性を取得するエージェントモデルがあります。ただし、ある特定のコントローラーアクションについては、ビューに渡す前に、エージェントレコードにいくつかの「一時的な」属性を追加したいと思います。
これは可能ですか?
基になるデータベーステーブルから属性を取得するエージェントモデルがあります。ただし、ある特定のコントローラーアクションについては、ビューに渡す前に、エージェントレコードにいくつかの「一時的な」属性を追加したいと思います。
これは可能ですか?
はい、モデルをその場で拡張できます。例えば:
# 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