私はレールを使い始めたばかりで、小さな問題に遭遇しました。私が実装しようとしているのは、ユーザーがウィジェットを追加できる「ページ」を作成できるようにする方法です。
そのため、名前、説明などのデータベースフィールドを持つ「ページ」のモデルをセットアップしました。また、「has_many :widgets」関連付けもあります。
ここで私は困惑しています。ユーザーが使用できるウィジェットのリストがあります。「私について」、「フォト ギャラリー」、「コメント」、「ビデオ」など。これらのいずれかを選択し、コンテンツをカスタマイズしてページに追加できます。
ユーザーがウィジェットを選択してカスタマイズすると、「belongs_to user_id」でウィジェットテーブルにエントリが追加されます。ただし、ユーザーが選択したウィジェットと入力したカスタム コンテンツを指定する必要があります。
Railsでこれを実装するにはどうすればよいですか? 各ウィジェット タイプはどこで定義できますか?
いくつかの方法を考えることができますが、どれが最適かはわかりません。
- 1 つのオプションは、ウィジェットごとにモデルを使用することです。AboutMeWidget、VideosWidget などがあります。これにより、ウィジェットに必要なフィールドを使用して各モデルをカスタマイズできます。ただし、これは効率的ではないようで、必要なモデルが多すぎます。
- もう 1 つのオプションは、ウィジェット タイプをどこか (しかしどこで?) に定義してから、ウィジェット テーブルの「widget_type」を単純化することです。(したがって、テーブルには「belongs_to :user」と「has_one :widget_type」が含まれます。) また、ユーザーが入力したデータ用のフィールドも必要になります (おそらく XML を介して?)。
- 最後に考えられるオプションは、Ruby クラスを使用してウィジェットを定義することです。ユーザーがウィジェットをカスタマイズしたら、ウィジェットのクラスからオブジェクトを作成し、そのオブジェクトを保存します。
他に良い方法はありますか?