У меня есть приложение Ruby on Rails, и я хотел бы иметь возможность динамически выбирать, какое поле возвращать в базу данных.Вот что я имею в виду:
Предположим, у меня есть таблица базы данных с именем Dog, и в этой таблице есть поля "id", "name", "color".
Если я хочу получить dog #7s имя, я мог бы просто сделать:
d = Dog.find(7)
the_output = d.name
Однако, что я хочу сделать, это динамически выбрать, какое поле вернуть для собаки # 7.Итак, предположим, что я определил:
the_field = "name"
Я хочу иметь возможность сделать что-то вроде вызова:
d.(the_field)
и заставить его вернуть имя собаки.(Я использую скобки здесь, потому что в MATLAB вы можете сделать это таким образом (и я делаю все время), и это работает, но это не работает в Rails.) Очевидное преимущество этого состоит в том, что я могу тогда где-то еще впрограмма установила the_field = "color"
и мой тот же код возвращает цвет собаки вместо имени.
Я пытался сделать это:
Dog.find(d.id, :select=>the_field)
, но это возвращает объект Dog, а непросто строка, содержащая имя собаки.А поскольку в коде я не знаю, какое поле вызывается, я не уверен, как извлечь только строку, содержащую поле, которое мне нужно.
Так что, надеюсь, все это имело смысл, инадеюсь, какой-нибудь добрый человек знает, как это сделать.
Спасибо!
Q