разработка: новые проблемы с регистрацией пользователей, PG::ProtocolViolation. Рельсы4, Постгрес

Я использую devise и omni-auth для входа в систему через linkedin.

Я добавил метод from_omniauth в пользовательскую модель, как указано в Railscast:

Это код:

#Create a new user if does not exist   
def self.from_omniauth(auth)
    where(auth.slice(:provider, :uid)).first_or_create! do |user|
       user.provider = auth.provider
       user.uid = auth.uid
       user.email = auth.info.email
    end
end


Started GET "/users/auth/linkedin/callback?oauth_token=XXX" 
INFO -- omniauth: (linkedin) Callback phase initiated.
Processing by OmniauthCallbacksController#linkedin as HTML

   (0.4ms)  BEGIN
  User Exists (0.6ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1
  SQL (3.6ms)  INSERT INTO "users" ("created_at", "email", "provider", "uid", "updated_at") VALUES ('2013-11-12 06:50:57.811205', '[email protected]', 'linkedin', 'XXXX', '2013-11-12 06:50:57.811205') RETURNING "id"  *[["created_at", Tue, 12 Nov 2013 06:50:57 UTC +00:00], ["email", "[email protected]"], ["provider", "linkedin"], ["uid", "XXXX"], ["updated_at", Tue, 12 Nov 2013 06:50:57 UTC +00:00]]*
**PG::ProtocolViolation: ERROR:  bind message supplies 5 parameters, but prepared statement "a1" requires 0**
: INSERT INTO "users" ("created_at", "email", "provider", "uid", "updated_at") VALUES ('2013-11-12 06:50:57.811205', '[email protected]', 'linkedin', 'ts2xg5e6d9', '2013-11-12 06:50:57.811205') RETURNING "id"
   (0.3ms)  ROLLBACK
Completed 500 Internal Server Error in 117ms

PG::ProtocolViolation - ERROR:  bind message supplies 5 parameters, but prepared statement "a1" requires 0

Мне трудно понять, почему правильный запрос не генерируется. Если я скопирую оператор вставки и запущу его, запись будет вставлена ​​​​в БД в порядке. Но он генерирует эти дополнительные параметры после возврата Id .. в запросе выше.

Есть идеи, как это решить?

Спасибо


person codeObserver    schedule 12.11.2013    source источник
comment
Вы используете PostgreSQL с Rails4??   -  person LHH    schedule 12.11.2013
comment
Да, мне нужно что-то изменить? . Проблемы начали возникать после обновления до Rails4, но я не могу связать это с чем-то конкретным.   -  person codeObserver    schedule 12.11.2013
comment
github.com/rails/rails/issues/12330 . Это заставило меня поверить, что это связано с подготовленными операторами, поскольку я также видел исключения, вызывающие кеширование активных записей. Я включил подготовленные операторы в database.yml, и все снова заработало! . Я позволю кому-нибудь подробно объяснить проблему и решение и приму этот ответ.   -  person codeObserver    schedule 12.11.2013