Это не может быть сделано, AFAIK, и даже если вы могли бы, это было бы ужасно и хрупкий взломать. Когда вы используете метод скидок, у вас больше нет доступа к конкретной корзине, только все тележки, связанные с купоном. Если это всего лишь одна тележка, вам повезло.
То, что я хотел бы предложить, а также для того, чтобы уменьшить сцепление и лучше соответствовать закону Деметры, было бы создать метод скидок на корзину
def discount
coupon.discount(self)
end
Другой вариант мог бы, возможно, будет иметь другой класс ActiveRecord, назовем его CouponActivation, сидящим посередине, который связывает тележки и купоны и вычисляет скидку.
В корзину есть CouponActivation, CouponActivation имеет одну корзину и принадлежит к Coupon, Coupon имеет много CouponActivations и многих Carts через CouponActivations. Вы устанавливаете метод скидок в CouponActivation и получаете доступ к необходимой вам информации.
По-прежнему желательно просто передавать значения. Легче, яснее, легче тестировать.
Что вы имеете в виду «который телега это без прохождения телеги в качестве параметра»? – Pavan
по описанию проблемы, что бы вы ни пытались достичь - скорее всего, вы ошибетесь –
@ AndreyDeineko, что я чувствую, что это не должно быть Cart.last.coupon.discount (cart.last) – chirag7jain