Можно ли получить доступ к атрибуту, который делегирован другой модели? - PullRequest
1 голос
/ 20 сентября 2019

При создании приложения у меня была модель Order с атрибутом delivery_option.Через некоторое время мне пришлось создать «более высокий уровень» order для группировки заказов и создать MainOrder.Теперь Order Order делегирует :delivery_option в MainOrder, но около 70% MainOrders имеет delivery_option == nil, потому что там, где он был создан во время миграции, просто для покрытия заказов из прошлого.Я не смог заполнить main_order.delivery_option = order.delivery_option, потому что в одном main_order может быть много заказов, каждый с разными :delivery_option.

Возможно ли как-то получить доступ к order.delivery_option, не нажимая order.main_order.delivery_option?

код выглядит так:

class MainOrder
  has_many :orders
end

class Order
  belongs_to :main_order
  delegates :delivery_option, to: main_order, allow_nil: true
end

1 Ответ

3 голосов
/ 20 сентября 2019

Вы можете использовать метод attributes, возвращающий хэш со значениями атрибута:

order = Order.first
# fetches delivery_option from the main_order
order.delivery_option 

# returns value stored in orders table belonging to the order
order.attributes["delivery_option"]

# you can also use
order.attribute(:delivery_option)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...