ruby-on-rails - 多态模型中的单个记录可以同时属于两个(或更多)模型吗?

标签 ruby-on-rails activerecord polymorphism polymorphic-associations

一般新手问题:如果我有一个名为 Message 的多态模型,以及另外两个名为 FilterUser 的模型,其中包含 has_many :消息,作为... 两者的关联。 Message 中的一条记录可以同时属于 UserFilter 模型吗?例如,我可以这样做:

...
User.find(1).messages << Message.find(1)
Filter.find(1).messages << Message.find(1)
...

并且 User#1Filter#1 中是否有 Message#1 可用? RailsGuides gives a very brief explanation ,所以这方面我还不清楚。

最佳答案

是的,你可以。假设一条消息有所有者(可以是 User 或其他类)和处理器(可以是 Filter 或其他类) 然后,在消息表中,您需要以下列:owner_id、owner_type、processor_id、processor_type。 这些类应该类似于:

class Message
  belongs_to :owner, polymorphic: true
  belongs_to :processor, polymorphic: true
end

class User
  has_many :messages
end

class Filter
  has_many :messages
end

但是,为了使消息属于两个模型,您需要执行以下操作:

Message.create(owner: User.find(1), processor: Filter.find(1))
# or like this
User.find(1).messages << Message.create(processor: Filter.find(1))

关于ruby-on-rails - 多态模型中的单个记录可以同时属于两个(或更多)模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073289/

相关文章:

ruby-on-rails - Ruby 正则表达式不工作

mysql - rails 加入条件查询

mysql - 如何更改 ActiveRecord 时区?

Java:扩展类的 if-else 实例

haskell - 逆变位置上较高等级类型的统一

ruby-on-rails - 编写命名范围的更好方法?

ruby-on-rails - 如果条件为真,则用回形针应用处理器

ruby-on-rails - 未初始化的常量 ReviewsController::Reviews

ruby-on-rails - RoR : has_one "or the other"?(或者,没有继承的多态性。)

ruby-on-rails - Rails 4 production.log 停止工作