В моем приложении у меня есть модель Widget
, модель Feature
с ассоциацией has_many - по таблице WidgetFeature
.
В соответствии с требованиями, когда я отправляю объект WidgetFeature, я должен добавить к нему также имя_компонента для данной связанной функции.
Существует два способа сделать это:
- При отправке объекта сделайте следующее:
widget_feature_object[:feature_name] = feature_name_value
, и тогда я смогу получить к нему доступ в моем контроллере или представлении с помощью widget_feature_object[:feature_name]
, потому чтоВ объекте есть пары (ключ, значение), поэтому я могу добавить еще один.
2.Сделайте feature_name
Виртуальный атрибут в WidgetFeature
модели, а затем создайте методы получения и установки для него.
Из того, что я знаю, вам следует использовать виртуальные атрибуты, когда вы хотите создать другое представление, отличное от полей, фактически присутствующих в модели (например, Полное имя = Имя + Фамилия).
здесь тоже самое?
Также , делает ли Rails некоторое кэширование на объектах, которое может пригодиться при использовании виртуальных атрибутов, а не при первом подходе?
Каковы плюсы и минусы каждого подхода и какой из них подходит лучше всего в соответствии с моими требованиями?Большое спасибо.