委派3个模型的最佳方式

时间:2014-05-20 09:44:43

标签: ruby-on-rails ruby-on-rails-4

我有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 个答案:

答案 0 :(得分:1)

如果您需要User模型中的这些方法,那么您应该在User模型中定义它们。您可以将subscription.plan委托为:

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

这将为您提供user.plan_nameuser.plan_sku