首页 > 解决方案 > ruby on rails 模型中的“as”是什么?

问题描述

ruby on rails 模型中的“as”是什么?它是如何工作的?

例如

has_many :something, as: :reasonable

它是多态的吗?

标签: ruby-on-rails

解决方案


是的,这是一个多态关联,它允许一个模型属于多个模型。应该有

class Something < ApplicationRecord
  belongs_to :reasonable, polymorphic: true
end

然后任何模型都可以在不向Something添加另一列的情况下将其中的许多都视为合理。

class Thing < ApplicationRecord
  has_many :somethings, as: :reasonable
end

class Stuff < ApplicationRecord
  has_many :somethings, as: :reasonable
end

某些东西同时存储了与其关联的类和 ID,从而允许它是多态的。


推荐阅读