我有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
等...)?或者我应该在订阅模型中创建它们并委托它们吗?
答案 0 :(得分:1)
如果您需要User
模型中的这些方法,那么您应该在User
模型中定义它们。您可以将subscription.plan
委托为:
# app/models/user.rb
delegate :name, :sku, to: 'subscription.plan', prefix: 'plan'
这将为您提供user.plan_name
和user.plan_sku
。