我有以下ruby类:
class Question
key :id, String
key :data, String, :default => "", :required => true
我想添加另一个基于id和title的键(特别是“#{id}#{data}”)。有没有一种简单的方法可以做到这一点。
我需要这个的原因是因为我正在使用mongo map slugizer,它想要一个密钥的名称slugize(它的代码调用slugize(self[key_provided]))
我试图弄清楚如何使用它来强制id +数据在一起而不必改变它的代码。任何想法?
编辑: 我正在使用来自mongomapper_ext的slugizer。您可以从以下示例中看到:https://github.com/dcu/mongomapper_ext/blob/master/examples/slugizer.rb
slug_key传递了其中一个要进行slugize的键的名称。我想定义两个密钥,以便不必更改代码。谢谢!
答案 0 :(得分:0)
我不确定密钥的位置:xx来自但是为了让您的类响应任意函数调用,例如Question.1ABRA,您应该使用 method_missing 功能,只要“#{id}#{数据}“可以通过常规异常检测
http://kconrails.com/2010/12/21/dynamic-methods-in-ruby-with-method_missing/