Rails类型数据库字段

时间:2011-12-02 06:38:50

标签: ruby-on-rails

我有一张名为Notification的表。此表包含以下字段:id,:user_id,:foreign_id,:type

我想使用外键字段:foreign_id 将通知与其他表格如朋友,测验,运动,旅行相关联,以便我可以通用方式存储不同类型的通知。我想在:类型数据库列中存储什么类型的通知,例如“朋友”或“测验”等。

在Rails中实现这样的目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

我猜你正在寻找的是Polymorphic Associations

答案 1 :(得分:1)

您可以将关联对象的类名存储为object_type(或者您命名)字段中的字符串,以便您可以检索相关对象:

# create new notification for quiz
Notification.create(user_id: user.id, foreign_id: quiz.id, object_type: quiz.class.to_s)

# load associated object for notification
associated_object = notification.object_type.constantize.find(notification.foreign_id)