【发布时间】:2013-08-29 01:23:21
【问题描述】:
我有一个 Log 模型,它具有多态关联和另一个与 User 模型的关联:
class Log < ActiveRecord::Base
belongs_to :loggable, polymorphic: true
belongs_to :user
end
在我的 User 模型中,我与 Log 模型有一个 has_many 关联:
class User < ActiveRecord::Base
has_many :logs
end
我想在 User 模型中有另一个关联,如下所示:
class User < ActiveRecord::Base
has_many :logs
has_many :logs, as: :loggable
end
但我想这两个关联会相互冲突(我不知道,没试过)......
那么这是解决这个问题的正确方法吗?还是有更好的方法?
【问题讨论】:
-
为什么需要另一个关联来记录日志?
-
我需要一个关联,其中用户是“演员”,而用户是“主题”。例如:“user1在contact2上添加了注释”(user1是actor)和user2暂停user1(user1是subject,user2是actor)
-
您只记录用户或其他模型?您不能在 Logs 表(actor_id、subject_id)上执行此操作,在 User 模型上使用和创建范围吗?
-
我正在记录多个模型。 @Marek Lipka 提供了正确的解决方案,其中 Log 模型尽可能保持通用。
标签: ruby-on-rails associations polymorphic-associations