2

何らかの理由で、以下のコードは重複を作成します。それはいつも起こるわけではありません。十分な回数リフレッシュすると、発生しなくなります。奇妙なことは、それが作成している「重複」が私のユーザー 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]]
4

1 に答える 1

3

current_user.idの代わりに使用current_user:

@food.page_views.find_or_create_by_user_id(current_user.id)

「魔法の方法」はuser_id整数を必要とします。代わりにオブジェクトを与えています。

于 2012-09-25T02:02:07.197 に答える