2014-10-19 2 views
1

Я использую комбинацию кода изNeo4j камень даты и времени тип данных

http://railscasts.com/episodes/360-facebook-authentication?view=asciicast

OAuth части и пытается интегрировать его с Neo4j

https://github.com/neo4jrb/neo4j

Насколько я знаю, этот драгоценный камень заменяет многие активные записи, включая типы данных.

Я пытаюсь заменить этот блок кода. У них есть свой oauth_expires_at, заданный как тип данных datetime, который я не верю, что камень neo4j имеет (я предполагаю, что не могу использовать тип данных, потому что в этом случае активная запись заменяется на neo4j). Какие могут быть некоторые варианты для решения этой проблемы?

def self.from_omniauth(auth) 
    where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| 
     user.provider = auth.provider 
     user.uid = auth.uid 
     user.name = auth.info.name 
     user.oauth_token = auth.credentials.token 
     user.oauth_expires_at = Time.at(auth.credentials.expires_at) 
     user.save! 
    end 
    end 

ответ

2

Жемчуг поддерживает DateTime! Добавьте соответствующие свойства в вашу модель.

class User 
    include Neo4j::ActiveNode 
    property :provider 
    property :uid 
    property :name 
    property :oauth_token 
    property :auth_expries_at, type: DateTime 
end 
+0

Thanks chris. Была ли DateTime добавлена ​​в neo4J? Правильно ли было предположить, что типы данных neo4j переопределяют старые AR? Я также пытался понять, были ли автоматически созданы временные метки (created_at, updated_at) – Clam

+0

Это не так. Мы используем active_attr для обеспечения преобразования типов свойств, вы можете проверить его и посмотреть, что он поддерживает. Когда вы сохраняете, ваши свойства Rails преобразуются в типы данных, совместимые с Neo4j; когда вы загружаете, они преобразуются обратно в то, что вы ожидаете. Исключением является Time, которое существует в gem, но на самом деле даст вам DateTime. – subvertallchris

Смежные вопросы