2016-08-11 9 views
0
  • Ubuntu 16.04.1 LTS
  • Rails 5.0.0
  • Rubin 2.3.1p112 (2016.04.26) [x86_64-linux-gnu]
  • Juwel 'mysql2', '~> 0.3.18': Plattform =>: Rubin
  • Juwel 'Denken-Sphinx', '~> 3.2.0'
  • PostgreSQL 9.5.3

I Richte den Sphinx-Such-Engine ein ne in meinem Rails 5-Projekt und es brach die Rails belongs_to integrierte Validierung. Beispiel:Denken-spinx Pausen belongs_to integrierte Validierungs

class Post < ApplicationRecord 
    belongs_to :user 
end 

class Article < ApplicationRecord 
    belongs_to :user 
end 

class User < ApplicationRecord 
    has_many :posts 
    has_many :articles 
end 

Früher, wenn ich einen neuen Post erstellt und stellen nicht die User (als Mutter) in der Post ‚s new Form, Rails feuerte den Validierungsfehler:

1 error prohibited this post from being saved: 
User must exist 

Jetzt nach Beim Hinzufügen von Shpinx passiert diese Validierung nicht mehr (unter der Post Erstellung). Ein neues Post wird im Hintergrund mit einem leeren Feld user_id erstellt.

Das gleiche Problem passiert jetzt auch mit dem Article Modell - es passiert mit welchen Modellen, die die belongs_to Assoziation haben.

Wie behebt man dieses Problem? Natürlich könnte ich einfach validates :user, presence: true zu Post- und Artikelmodellen hinzufügen - aber ich mag solche plumpen Lösungen nicht.

HINWEIS: Wenn ich die gem 'thinking-sphinx', '~> 3.2.0' Zeile in meinem Gemfile auskommentieren - das beschriebene Problem verschwindet.

Antwort

1

Dies war in der Tat ein Thinking Sphinx Bug, den ich just fixed habe.

können Sie die neueste verwenden, indem Sie den Code in Ihre Gemfile mit:

gem 'thinking-sphinx', '~> 3.2.0', 
    :git => 'git://github.com/pat/thinking-sphinx.git', 
    :branch => 'develop', 
    :ref => '3138fea725'