繁体   English   中英

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计划 model 的 object 获得。 我仍然无法得到这个。 请帮忙。

先感谢您。

你永远不想在 Rails 模型中使用attr_accessor 。*

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

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

它也将打破协会。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM