2014-05-20 6 views
1

У меня есть 3 моделиЛучший способ передать 3 модели

User, Subscription, Plan

User has_one Subscription

Subscription belongs_to Plan, and belongs_to user

Plan has_one Subscription

План колонн: name, sku, active, price

Как я могу передать эти атрибуты в моей модели пользователя, так что я могу сделать что-то вроде: current_user.plan_name, current_user.plan_sku и т.д.

На данный момент я делегировал весь план

delegate :plan, to: :subscription 

И я могу выполнить это:

current_user.plan.name

Нужно ли создавать эти методы (def plan_name plan.name end и т. Д.) В моей модели пользователя? Или я должен создать их в модели подписки и делегировать их?

ответ

1

Если вам нужны эти методы для модели User, тогда вы должны определить их в модели User. Вы можете делегировать subscription.plan как:

# app/models/user.rb 
delegate :name, :sku, to: 'subscription.plan', prefix: 'plan' 

Это даст вам user.plan_name и user.plan_sku.

Смежные вопросы