我在Rails 5项目中设置了Sphinx搜索引擎,它打破了Rails belongs_to
内置验证。例如:
class Post < ApplicationRecord
belongs_to :user
end
class Article < ApplicationRecord
belongs_to :user
end
class User < ApplicationRecord
has_many :posts
has_many :articles
end
早些时候,当我创建新的Post
并且未在User
的{{1}}表单中设置Post
(作为父级)时,Rails会触发验证错误:
new
现在添加Shpinx后,此验证不再发生(在1 error prohibited this post from being saved:
User must exist
创建时)。使用空Post
字段静默创建新的Post
。
同样的问题现在发生在user_id
模型中 - 它发生在任何具有Article
关联的模型中。
如何解决这个问题?当然,我可以简单地将belongs_to
添加到Post和Article模型中 - 但我不喜欢这种笨拙的解决方案。
注意:如果我在validates :user, presence: true
中注释掉gem 'thinking-sphinx', '~> 3.2.0'
行,则说明问题就会消失。
答案 0 :(得分:1)
这确实是一个思考的Sphinx错误,我已经just fixed。
您可以在Gemfile中使用此代码来使用最新版本:
gem 'thinking-sphinx', '~> 3.2.0',
:git => 'git://github.com/pat/thinking-sphinx.git',
:branch => 'develop',
:ref => '3138fea725'