2013-05-23 2 views
0

Я использую драгоценный камень amistad для управления дружбой в моем приложении.Настройка 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 не автоматически, когда создаются записи или обновляются с помощью камня (например: @user.invite another_user).

FYI, метод пригласите является следующее: (code 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 в приложении, он не обновляет временные метки ...


Во-вторых, в консоли рельсы, если я типа Friendships.all, Friendship.all, Amistad::Friendships.all ... Я получаю:

NameError: uninitialized constant Friendship


Как я могу решить эти 2 проблемы. Какие-либо предложения ?

ответ

0

Чтобы получить доступ к модели дружбы, используйте: Amistad::Friendships::UserFriendship.all

Миграция прекрасно. Больше нечего делать, чтобы автоматически обновлять поля.

Не забудьте перезапустить сервер, чтобы Активная запись активировала изменения миграции!

Смежные вопросы