2

以下のコードがありますが、実行に失敗します。

%w(acp bcp ccp tcp).each do |kind|
    define_method(kind+"_name") { send "[#{kind}_title ? #{kind}_title.title : '',#{kind}_firstname,#{kind}_lastname].join(' ')" }
 end

そしてそれを実行するとき:

> Form.last.acp_name
NoMethodError: undefined method `[acp_title ? acp_title.title : '',acp_firstname,acp_lastname].join(' ')' for #<Form:0x108daabe8>

リテラルではなくコードとして実行するように修正する方法を知っている人はいますか?

前もって感謝します...

4

1 に答える 1

4
%w(acp bcp ccp tcp).each do |kind|
  define_method("#{ kind }_name") do
    title = send("#{ kind }_title") || ''
    array = [ title, send("#{ kind }_firstname"), send("#{ kind }_lastname")]
    array.join(' ')
  end
end
于 2013-09-05T15:04:25.580 に答える