Thinking-spinx打破了belongs_to内置验证

时间:2016-08-11 07:58:45

标签: ruby-on-rails postgresql thinking-sphinx

  • Ubuntu 16.04.1 LTS
  • Rails 5.0.0
  • ruby​​ 2.3.1p112(2016-04-26)[x86_64-linux-gnu]
  • gem'mysql2','〜> 0.3.18',: platform => :红宝石
  • 宝石'思考 - 狮身人面像','〜> 3.2.0'
  • PostgreSQL 9.5.3

我在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'行,则说明问题就会消失。

1 个答案:

答案 0 :(得分:1)

这确实是一个思考的Sphinx错误,我已经just fixed

您可以在Gemfile中使用此代码来使用最新版本:

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