Трудно сказать, потому что вы не говорите, в каком классе мы находимся. Я предполагаю, что мы находимся в Item
, но мне немного непонятно, почему у вас item = nil
item = nil
Я предполагаю, что запутывает метод с тем же именем для вашей переменной экземпляра @ item.
Еще один способ сделать это - вызвать метод, который вы определили выше.
1010 * например *
define_method "#{item_name}_id" do
self.send(item_name).id
end