我刚开始使用rails并且遇到了一个小问题。我试图实现的是一种允许用户创建“页面”的方法,他们可以在这些页面上添加小部件。
所以我为“pages”建立了一个模型,它有名称、描述等数据库字段。它还有一个“has_many :widgets”关联。
这就是我难过的地方。我有一个用户可以使用的小部件列表。诸如“关于我”、“照片库”、“评论”、“视频”等内容。他们可以选择其中之一,自定义内容并添加到他们的页面。
我想,当用户选择并自定义一个小部件时,我将在小部件表中添加一个带有“belongs_to user_id”的条目。但是,我需要指定用户选择的小部件以及输入的自定义内容。
我如何在 Rails 中实现它?我在哪里可以定义每个小部件类型?
我可以想到几种方法,但不确定哪种方法最好。
- 一种选择是为每个小部件使用一个模型。我会有 AboutMeWidget、VideoWidget 等。这将允许我使用小部件可能需要的任何字段自定义每个模型。但是,这似乎效率不高,并且需要太多模型。
- 另一种选择是在某处(但在哪里?)定义小部件类型,然后简化小部件表中的“widget_type”。(因此该表将包含“belongs_to :user”和“has_one :widget_type”。)我还必须为用户输入的数据提供一个字段(可能通过 XML?)。
- 我能想到的最后一个选项是使用 Ruby 类来定义小部件。当用户自定义小部件时,我将从小部件的类创建一个对象并存储该对象。
还有其他更好的方法吗?