由于某种原因,下面的代码会创建重复项。它永远不会发生。如果我刷新足够的次数就会停止发生。奇怪的是,它创建的“重复”甚至不匹配我的用户ID!这是开发。 User表甚至没有id = 1的用户。
@food.page_views.find_or_create_by_user_id(current_user)
这是我的current_user方法。
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
rescue ActiveRecord::RecordNotFound
session[:user_id] = nil
end
helper_method :current_user
end
来自控制台:
PageView Load (0.4ms) SELECT "page_views".* FROM "page_views" WHERE "page_views"."food_id" = 2 AND "page_views"."user_id" = 3 LIMIT 1
(4.0ms) BEGIN
SQL (0.6ms) INSERT INTO "page_views" ("created_at", "food_id", "updated_at", "user_id") VALUES ($1, $2, $3, $4) RETURNING "id" [["created_at", Tue, 25 Sep 2012 01:36:43 UTC +00:00], ["food_id", 2], ["updated_at", Tue, 25 Sep 2012 01:36:43 UTC +00:00], ["user_id", 1]]
答案 0 :(得分:3)
使用current_user.id
代替current_user
:
@food.page_views.find_or_create_by_user_id(current_user.id)
“魔法”想要一个user_id
整数;你给它一个对象。