Я пытаюсь создать пользовательский тип данных MongoMapper в RoR 2.3.5 под названием Translatable:Как создать этот пользовательский тип данных MongoMapper?
class Translatable < String
def initialize(translation, culture="en")
end
def languages
end
def has_translation(culture)?
end
def self.to_mongo(value)
end
def self.from_mongo(value)
end
end
Я хочу, чтобы иметь возможность использовать его как это:
class Page
include MongoMapper::Document
key :title, Translatable, :required => true
key :content, String
end
Затем осуществить подобное :
p = Page.new
p.title = "Hello"
p.title(:fr) = "Bonjour"
p.title(:es) = "Hola"
p.content = "Some content here"
p.save
p = Page.first
p.languages
=> [:en, :fr, :es]
p.has_translation(:fr)
=> true
en = p.title
=> "Hello"
en = p.title(:en)
=> "Hello"
fr = p.title(:fr)
=> "Bonjour"
es = p.title(:es)
=> "Hola"
В MongoDB я представляю информацию будет храниться как:
{ "_id" : ObjectId("4b98cd7803bca46ca6000002"), "title" : { "en" :
"Hello", "fr" : "Bonjour", "es" : "Hola" }, "content" : "Some content
here" }
So Page.title - строка, которая по умолчанию соответствует английскому языку (: en), когда культура не указана.
Я бы очень признателен за любую помощь.
Дэвид Cuadrado был достаточно любезен, чтобы помочь мне часть пути через MongoMapper группы Google со следующим кодом: http://pastie.org/873220, но я не получаю желаемого Результаты. – Jurgen
Bump! Кто угодно? Кто угодно? ... – Jurgen
Нашел! см. ниже. – Tilo