我正在尝试为名为“选择”的第一个创建操作设置badge_rule(成员选择产品)。
规则:
grant_on 'member/selections#create', badge: 'FirstSelection', to: :member do |selection|
selection.member.selections.count == 1
end
控制器“选择”位于文件夹“member”中: controllers / member / selections_controller.rb
在#create操作中,这是我的错误报告:
Merit :: Action Load(0.4ms)SELECT“merit_actions”。* FROM“merit_actions”WHERE“merit_actions”。“processed”= $ 1 [[“processed”,“f”]] (0.2ms)BEGIN SQL(0.4ms)UPDATE“merit_actions”SET“processed”= $ 1,“updated_at”= $ 2 WHERE“merit_actions”。“id”= $ 3 [[“processed”,“t”],[“updated_at”,“2018- 05-07 09:35:24.776028“],[”id“,30]] (0.5ms)COMMIT [优点]没有找到目标:未初始化的常数成员::选择。 /Users/youguild/.rbenv/versions/2.3.5/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in`find' 在211ms内完成500内部服务器错误(视图:2.8ms | ActiveRecord:134.4ms)
NoMethodError(未定义的方法`member'表示true:TrueClass):
app / models / merit / badge_rules.rb:53:在`block in initialize'
为什么会发生错误以及如何解决?
这个问题通过以下方式解决:
答案 0 :(得分:2)
它将控制器名称转换为模型名称,但控制器使用Member
命名空间。尝试将选项model_name: "Selection"
添加到grant_on
行。