我有一个类似于博客的rails应用程序,我使用标记系统对帖子进行分类。
我需要添加一些与“相关帖子”功能类似的帖子。
因此,例如,如果帖子1与帖子4相关,则在帖子1的节目动作结束时,我想要渲染帖子4的图像,同时在帖子4的结尾处显示帖子1的图像
我的想法是创建一个与帖子模型有HABTM关系的“链接”模型,但我不确定“帖子”是否有很多“链接”通过“链接”会更好。 这两个想法似乎都有相同的结果,所以我更喜欢哪种方法?
答案 0 :(得分:1)
HABTM本质上非常简单,只有一个外键对加入模型表。
当您需要向该连接关系添加其他属性时,和/或当您需要将连接视为自己的模型时,通常使用has_many
到。
例如,在您的情况下,您可能希望链接按照创建顺序显示。为此,您需要在关系上存储创建时间戳。为此,简单的HABTM连接表是不够的,因此您切换到has_many
并创建Linking
模型来封装连接。
要继续该示例,您还可以将Linking
作为一流资源,并设置一个页面,您可以在其中单独编辑/添加/删除它们与链接Post
。
在大多数情况下,我个人总是使用has_many
。它对我来说只是感觉更清洁(没有自动命名表魔法接受或覆盖,并且链接更加明显),我发现很多时候,加入关系确实值得成为一等公民。