模型belongs_to eiher /或多个模型
是否有可能拥有一个属于(或/或)多个模型的模型?
例如,在我的项目中,我有一个可能属于某个人或组的订阅模型。 当某人加入某个特定群组时,她会自动“inheritance”该群组的订阅。
我已经建立了以下协会
在person.rb:
has_many :subscriptions
在group.rb中:
has_many :subscriptions
在subscription.rb中:
belongs_to :person belongs_to :group
另外,我在订阅表中添加了person_id和group_id的字段。
问题是,当我尝试创建订阅时,让我们说一个人我得到一个错误,“组必须存在”。
有办法克服这个问题吗?
如果不是绝对必要的话,我宁愿避免使用多态关联。
是的,模型可以属于多个模型。
如果关联不存在,则rails中的belongs_to
现在默认会触发validation错误。
我们可以在每个关联的基础上关闭它,可选:true。 您必须将订阅关联belongs_to group声明为可选
belongs_to :class, optional: true
是的,您可以将belongs_to
用于多个模型
你也可以使用多态关联
考虑以下示例,其中address可以属于多个模型
class Subscription < ApplicationRecord belongs_to :resource, polymorphic: true end
对于其他模型,使用has_one
或has_many
关联
has_many :subscriptions, foreign_key: :resource_id
注意:需要在订阅表中添加resource_id和resource_type列
- 对于#<ActiveRecord :: ConnectionAdapters :: MysqlAdapter,未定义的方法`explain'
- Rails 4活动记录validation – 如果存在至少一个属性而有条件地validation4个属性的存在,同时不允许存在
- Ruby ActiveRecord和sql元组支持
- 渴望加载,具体取决于Ruby on Rails中的关联类型
- validation和更新单个属性rails
- 优化困难查询(可能带有吱吱声)
- 当某些属性可能被标记为销毁时,用于validation嵌套属性的唯一性
- Rails:Polymorphic assosiation和accepts_nested_attributes
- 从ActiveRecord / Rails查询中检索单个记录