- 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.