你好,我是rails的初学者。
我有两个型号:UserSubscriptions和SubscriptionPlan。
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
endsubscription_plan.rb
class SubscriptionPlan < ApplicationRecord
has_many :user_subscriptions
end我想把new_plan作为subscription_plan模型的一个对象。我还是不能得到这个。请帮帮忙。
提前谢谢你。
发布于 2021-05-30 17:08:29
你永远不会想在Rails模型中使用attr_accessor。*
在普通的老ruby对象中使用attr_accessor来生成实例变量的访问器方法。如果在Rails模型中使用attr_accessor,就会破坏它通过读取数据库模式而创建的setter和getter。
结果是,当您保存时,该属性将不会被持久化。这是因为属性不会存储在属性散列中,也不会标记为脏。它也不会包含在任何使用attributes api的方法中,比如#attributes或#to_json。
这也会打破这种关联。
class UserSubscription < ApplicationRecord
belongs_to :subscription_plan
belongs_to :new_plan, class_name: 'SubscriptionPlan'
endhttps://stackoverflow.com/questions/67758670
复制相似问题