在Ruby on Rails上使用gem Merit时出错

时间:2018-02-09 03:36:41

标签: ruby-on-rails ruby rubygems merit-gem

我在Ruby on Rails版本5.1.4上使用gem merit 3.0.1制作成就系统。但是当我尝试在POST方法或rails控制台上创建User时,问题就出现了。 问题出现了ActiveRecord::RecordInvalid: Validation failed: Sash must exist。我已经关注了这个链接https://github.com/merit-gem/merit/issues/265,它说我必须让sash可选,然后由另一个github用户提取自定义优点gem,并且一切顺利,直到我看到每个用户的sash_id为{{1如果sash_id是nil,则表示徽章无法与用户建立关系。 问题是什么?我已经尝试了github内部的每一步,并且没有任何线索。每次用户注册时,我是否手动创建sash_id?谢谢。

这是我的用户模型

nil

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 请使用此分支

    gem 'merit', github: 'tamycova/merit', branch: 'f657596409d98fc7c8e3274b213b86cc47d87495'

我认为它会修复它。 BTW您使用的是哪种版本的导轨?

答案 1 :(得分:0)

我做了一个小修复,但需要修复很多修复工作。现在它的工作,问题是'belongs_to'关系。 Merit与Rails 5并不完全兼容。

# Insert into model app/models/user.rb
before_validation :set_sash

def set_sash
  sash = ActiveRecord::Base.connection.execute(query_sash)
  self.sash_id = sash.first["id"]
end

def query_sash
  'INSERT INTO sashes (created_at, updated_at) VALUES (CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
   select id from sashes order by created_at desc limit 1;'
end

不要讨厌我的代码,我快速解决了这个问题。 可能我们有比这更好的选择,如果你知道其中之一,请评论。

感谢。