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

仅供参考,邀请方法如下:(代码here

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:未初始化的常量友谊


我该如何解决这两个问题。有什么建议么 ?

4

1 回答 1

0

要访问 Friendship 模型,请使用:Amistad::Friendships::UserFriendship.all

迁移没问题。为了使字段自动更新,无需执行任何其他操作。

不要忘记重新启动服务器,以便 Active Record 获取迁移的更改!

于 2013-05-23T16:12:24.350 回答