Pergunta

Eu tenho uma coleção com um índice em: criate_at (que neste caso em particular deve ser uma data)

De Rails Qual é a maneira correta de salvar uma entrada e depois recuperá -la até a data?

Estou tentando algo como:

Modelo: Campo: Criado_at ,: Type => Hora

roteiro:

Col.create (: criate_at => time.parse (outro_model.created_at) .to_s

e

Col.find (: all ,: condições => {: criate_at => time.parse (a mesma coisa)})

E não está retornando nada

Foi útil?

Solução

O driver Mongo e vários ORMs lidam com os objetos de data, hora e datetime muito bem; Não há razão para lançá -los em cordas.

Col.create(:created_at => another_model.created_at)

E descobrindo:

Col.all(:created_at => another_model.created_at)

Você não deseja definir strings, porque as datas são armazenadas internamente como objetos de data do BSON e são indexadas e pesquisadas como tal. Se você os salvar como strings, não poderá fazer coisas como comparações maiores/menores que/intervalo de maneira eficaz.

Outras dicas

Col.create(:created_at => Time.parse(another_model.created_at).to_s)

Essa linha passaria seu objeto de tempo como uma string, retire o to_s Para enviá -lo para a camada de análise de tipo em seu ORM (Mongomapper ou Mongoid) como um objeto de tempo. Esse é o único erro que posso ver que causaria não funcionar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top