Ключ класса Ruby на основе других ключей - PullRequest
0 голосов
/ 27 января 2011

У меня есть следующий класс ruby:

class Question
key :id, String
key :data, String, :default => "", :required => true

Я хотел бы добавить еще один ключ, основанный на идентификаторе и заголовке (в частности, "# {id} # {data}"). Есть ли простой способ сделать это.

Причина, по которой мне это нужно, заключается в том, что я использую slugizer mongo map, который хочет слагать имя ключа (его код вызывает slugize(self[key_provided])). необходимость изменить свой код. Есть идеи?

Edit: Я использую slugizer от mongomapper_ext. Вы можете видеть из следующего примера: https://github.com/dcu/mongomapper_ext/blob/master/examples/slugizer.rb

что slug_key передается имя одного из ключей, в котором следует использовать slugize. Я хотел бы определить два ключа для slugize вместе, без необходимости изменять их код. Спасибо!

1 Ответ

0 голосов
/ 28 января 2011

Я не уверен, откуда взялся ключ: xx, но чтобы ваш класс реагировал на произвольные вызовы функций, такие как Question.1ABRA, вам следует использовать функциональность method_missing , пока "# {id} # {data} "это может быть обнаружено обычным исключением

http://kconrails.com/2010/12/21/dynamic-methods-in-ruby-with-method_missing/

...