我有一个存储一些自定义日志的记录模型(Active Record)。
记录与我的应用程序中的所有其他模型存在多态关联,我可以有效地记录我想要在其他控制器中挂接我的Record方法。
我需要什么:
将日志放在单独的数据库中。
所以我必须:
能够在我的应用程序中管理两个不同的数据库(一个是Postgres / ActiveRecord,另一个是MongoDB / MongoMapper)
在我的Record模型(现在使用MongoMapper)和其他Active Record模型之间生成多态关联。
这样我就可以将我的日志保存到MongoDB数据库。
感谢。
答案 0 :(得分:1)
是的,这可以做到。
要创建多态关联,您需要类和ID。通过惯例,字段将命名为<assoc>_type
和<assoc>_id
‡。您需要进行一些连线以使一切正常。
<assoc>_type
和<assoc>_id
创建一个MongoMapper :: Document类(我相信MongoMapper允许Class
作为键类型)以及您可能使用的任何其他键需要。定义方法<assoc>
和<assoc>=
def assoc
assoc_type.find(assoc_id)
end
def assoc=(input)
assoc_type = input.class #STI makes this more complicated we must store the base class
asspc_id = input.id
end
可能会向ActiveRecord模型添加一个方法,允许他们访问MongoMapper日志记录类。如果有很多,您可能需要构建一个模块并将其包含在需要这种功能的所有类中。
‡替换为“参考”或“主题”等应用程序有意义的内容