2010年6月10日木曜日

ControllerHelper の汚染に対応

 何が起こっているのか、よくわかんないのだが、helper は、モジュールで作成されており、コントローラからコントローラを利用すると、モジュールによる汚染があるのでは無いか?と推察しています。
 どういう現象が起こるかと言うと、Employee と Customer に name というフィールドが存在している場合に、CustomersHelper 内で activescaffold の Field override を使った場合に、意図せず Employee の name まで挙動が波及してしまう事があります。


def name_column(record)
"<a href='mailto:" + record[:email_address].to_s + "'>" + record[:name].to_s + "</a>";
end


 Oh!No! Employee の name まで波及してるやんけーーーーー!!!

こんな時は、慌てず

def name_column(record)
if record.is_a? Customer
"<a href='mailto:" + record[:email_address].to_s + "'>" + record[:name].to_s + "</a>";
else
if record[:name] != nil
record[:name].to_s
else
''
end
end
end


です。うーん・・・どうなんでしょ・・・これ・・・

0 件のコメント: