Ruby on rails rails通过创建重复项查找或创建

Ruby on rails rails通过创建重复项查找或创建,ruby-on-rails,Ruby On Rails,由于某些原因,下面的代码会创建重复的代码。这并不总是发生。如果我刷新足够的次数,它就会停止发生。奇怪的是,它创建的“副本”甚至与我的用户id不匹配!这在dev中。用户表甚至没有id=1的用户 @food.page_views.find_or_create_by_user_id(current_user) 这是我当前的用户方法 def current_user @current_user ||= User.find(session[:user_id]) if session[:user_id

由于某些原因,下面的代码会创建重复的代码。这并不总是发生。如果我刷新足够的次数,它就会停止发生。奇怪的是,它创建的“副本”甚至与我的用户id不匹配!这在dev中。用户表甚至没有id=1的用户

@food.page_views.find_or_create_by_user_id(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]]

使用
current\u user.id
而不是
current\u user

@food.page_views.find_or_create_by_user_id(current_user.id)
“魔法方法”需要一个
用户id
整数;你给它一个对象