【发布时间】:2016-06-13 10:58:38
【问题描述】:
我在下面的列中有一个表格
id、user_id、friend_user_id
如果 A 是 B 的朋友,那么我想插入两条记录,例如 1. user_id:1,friend_user_id:2 2. user_id:2,friend_user_id:1
我已经使用下面的 after_create 回调完成了这项工作
after_create do
Friend.create(user_id: friend_user_id,friend_user_id: user_id)
end
如果其中任何一条记录已被删除,我想删除两条记录。
我已经尝试了 after_destroy 回调,如下所示。
after_destroy do
Friend.where(friend_user_id: user_id,user_id: friend_user_id).first.destroy
end
但我收到以下错误。
2.3.0 :002 > Friend.first.destroy
Friend Load (0.4ms) SELECT "friends".* FROM "friends" ORDER BY "friends"."id" ASC LIMIT 1
(0.2ms) begin transaction
SQL (0.7ms) DELETE FROM "friends" WHERE "friends"."id" = ? [["id", 10]]
Friend Load (0.3ms) SELECT "friends".* FROM "friends" WHERE "friends"."friend_user_id" = ? AND "friends"."user_id" = ? ORDER BY "friends"."id" ASC LIMIT 1 [["friend_user_id", 1], ["user_id", 2]]
SQL (0.1ms) DELETE FROM "friends" WHERE "friends"."id" = ? [["id", 11]]
Friend Load (0.1ms) SELECT "friends".* FROM "friends" WHERE "friends"."friend_user_id" = ? AND "friends"."user_id" = ? ORDER BY "friends"."id" ASC LIMIT 1 [["friend_user_id", 2], ["user_id", 1]]
(0.3ms) rollback transaction
NoMethodError: undefined method `destroy' for nil:NilClass
from /home/ubuntu/workspace/app/models/friend.rb:39:in `block in <class:Friend>'
我是 RoR 的新手。任何帮助将不胜感激。
【问题讨论】:
-
您的 call_back 在您删除记录后执行,因此在您的删除和回调方法之间,您的值为 nil。这就是为什么,它给你这个错误
标签: ruby-on-rails ruby ruby-on-rails-4