0

アプリケーションでフレンドシップを管理するために gem amistadを使用しています。

通知を表示できるように、関係がいつ発生するかを追跡したいと思います。

まず、リレーションシップ モデルにタイムスタンプを追加して、 : などのクエリを実行できるようにしますretrieve all Friendships where receiving user is current user, and where updated_at is greater than the last time the current_user checked his notifications。これらの結果を数えることで、次のように言うことができます: 3 つの受信連絡要求とそれらを表示します。

だから私は移行を行いました:

class AddUpdatedAtToFriendship < ActiveRecord::Migration
  def change
    change_table :friendships do |t|
      t.timestamps
    end
  end
end

rake db:migrateは正しく移行updated_atされますが、gem を介してレコードが作成または更新されると、 は自動的には移行されません (例: @user.invite another_user)。

参考までに、招待方法は次のとおりです: (コードはこちら)

def invite(user)
      return false if user == self || find_any_friendship_with(user)
      Amistad.friendship_class.new{ |f| f.friendable = self ; f.friend = user }.save
end

この場合、アクティブ レコードの自動タイムスタンプが機能しない理由がわかりません。

: コンソールでフレンドシップを手動で作成すると、タイムスタンプが設定されます。

$> rails c
test = Amistad::Friendships::UserFriendship.new
test.friend_id = 1
test.friendable_id = 2
test.save
test.updated_at
=> Thu, 23 May 2013 17:59:17 CEST +02:00

コンソールでそれを行っても、タイムスタンプが設定されています:したがって、コンテキストの問題である必要があります...

$> rails c
test2 = Amistad.friendship_class.new{ |f| f.friendable = User.find_by_id(5) ; f.friend = User.find_by_id(6) }.save
test2.updated_at
=> Thu, 23 May 2013 18:02:05 CEST +02:00

それでも、アプリケーションを呼び出す@user.invite another_userと、タイムスタンプが更新されません...


次に、Rails コンソールでFriendships.all, Friendship.all, Amistad::Friendships.all... と入力すると、次のようになります。

NameError: 初期化されていない定数 Friendship


この 2 つの問題を解決するにはどうすればよいでしょうか。助言がありますか ?

4

1 に答える 1