【问题标题】:Relationship between an account and a billing plan in Ruby on RailsRuby on Rails 中帐户和计费计划之间的关系
【发布时间】:2023-03-14 02:05:01
【问题描述】:

我正在为我们的客户构建一个后端管理面板。

我正在集成一项功能,允许用户升级和降级他们的每月订阅,这意味着为 billing_plans 表添加一个新模型。

我一直在尝试正确建立帐户和计划之间的关系。

我有一个 billing_plan 模型:

class BillingPlan < ActiveRecord::Base
  self.table_name = "billing_plans"
  has_many :accounts, primary_key: 'name', foreign_key: 'audio_billing_model'
end

还有一个账户模型:

class Account
  has_many :contacts
  belongs_to :user, primary_key: :email, foreign_key: :billing_email_address
  has_one :billing_plan, foreign_key: 'name', primary_key: 'audio_billing_model'
end

我相信这可以帮助其他人,而且我很确定之前一定有人遇到过它。

【问题讨论】:

  • 你说你想要一个账户和一个计划之间的关系,但是在你的代码中,你已经有了一个关系——一个BillingPlanhas_many :accounts和一个Accounthas_one :billing_plan。你的问题是你不确定这是否是正确的关系?
  • 是的,我不确定这是不是正确的关系,因为它没有产生预期的效果。

标签: ruby-on-rails ruby model relationships


【解决方案1】:

由于您尝试建立has_manybelongs_to 关系,只需在has_many 模型上定义主键,然后指示belongs_to 模型将该主键用作其外键:

# app/models/billing_plan.rb
class BillingPlan < ActiveRecord::Base
    self.table_name = "billing_plans" # Seems unnecessary, as the table name by default is `billing_plans`
    has_many :accounts, primary_key: 'name'
end

# app/models/account.rb
class Account < ActiveRecord::Base # Remember to subclass `ActiveRecord::Base`
  has_many :contacts
  belongs_to :user, primary_key: :email, foreign_key: :billing_email_address
  has_one :billing_plan, foreign_key: 'name'
end

【讨论】:

  • 谢谢你,虽然你所说的 'subclass ActiveRecord::Base' 是什么意思?
  • 在您描述的代码中,您声明了Account 类而不继承ActiveRecord::Base。但是,在您的班级装饰中,您需要将 Account 声明为 ActiveRecord::Base 子类,就像我在代码中所做的那样。
  • 啊,我忘记复制粘贴了。谢谢!
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2010-11-26
相关资源
最近更新 更多