テキストだけでRailsで簡単なユーザー通知を作成したいと思います。明らかに複数の通知が必要なので、まったく新しい移行を作成してユーザーモデルとの関連付けを作成する必要がありますか、それともユーザーテーブルの「通知」テキスト属性を拡張する方法はありますか?通知の間に改行を挿入するだけでよいと思いますが、それは面倒になりすぎるように聞こえるので、私が探しているものではありません。ありがとう!
3 に答える
通知のみを保存したい場合は、Railsにそれを配列として扱うように指示できます(通知の列タイプはtext
):
class User < ActiveRecord::Base
serialize :notifications, Array
end
追加の通知の詳細(作成者やタイムスタンプなど)を保存する場合は、おそらく別のモデルを使用する必要があります。
Railsのドキュメント:Active Recordで、「配列、ハッシュ、その他のマップできないオブジェクトをテキスト列に保存する」を検索します。
ユーザーが後で確認できるように通知の履歴を保持したい場合は、それをデータベースに保存することをお勧めします。はいの意味で、DBに新しいテーブルを作成する必要があります。これは、移行スクリプトを介して行う必要があります。user.notifications
この新しいモデルはユーザーモデルに関連付けて、すべての通知を取得するなどの操作を実行できるようにする必要があります。
timestamps
また、新しいモデルで使用した場合は、Notifications
後で楽しい分析を行うことができます。
この目的のためにRailsポリモーフィックアソシエーションを使用できます。このメカニズムを使用すると、ターゲットテーブルを変更せずに通知モデルを他のモデルに関連付けることができます。
より良い例は、このリンク http://railscasts.com/episodes/154-polymorphic-associationにあります。