Rails: attr_accessor 协会

Rails: attr_accessor association

你好,我是 rails 的初学者。

我有两个模型 UserSubscriptionsSubscriptionPlan

user_subscription.rb

class  UserSubscription < ApplicationRecord
  attr_accessor :new_plan_id
 
  belongs_to :subscription_plan
  belongs_to :new_plan_id, class_name: 'SubscriptionPlan', foreign_key: :new_plan_id
end

subscription_plan.rb

class SubscriptionPlan < ApplicationRecord
  has_many :user_subscriptions
end

我想获取 new_plan 作为 subscription_plan 模型的对象。我仍然无法得到这个。请帮助。

提前致谢。

您绝对不想在 Rails 个模型中使用 attr_accessor。*

attr_accessor 用于普通旧的 ruby 对象来生成实例变量的访问器方法。如果您在 Rails 模型中使用 attr_accessor,您将破坏它通过读取数据库模式创建的 setter 和 getter。

结果是当你保存时属性不会被持久化。这是因为属性没有存储在属性散列中,也没有标记为脏。它也不会包含在任何使用属性 api 的方法中,例如 #attributes#to_json.

它也会破坏关联。

class  UserSubscription < ApplicationRecord
  belongs_to :subscription_plan
  belongs_to :new_plan, class_name: 'SubscriptionPlan'
end