2013-04-19 2 views
0

У меня есть приложение Rails, которое выступает в качестве фонового для приложения iPhone. Всякий раз, когда создается запись, давайте назовем ее message, я отформатирую строку из приложения iPhone в Ruby DateTime, которая будет сохранена как поле в базе данных. Сама строка была преобразована из NSDate на стороне iPhone. Моя проблема заключается в том, что я хочу преобразовать DateTime обратно в строку, которую можно легко отформатировать в NSDate всякий раз, когда запрос отправляется для сообщений. Есть ли простое решение для этого?Форматирование поля Всякий раз, когда он запрашивается

+0

Что случилось с использованием строки, например '2013-04-19 08: 00: 00'? –

+0

Я собираюсь в конце концов написать несколько запросов, требующих, чтобы поле было DateTime для заказа сообщений. Если Rails делает это для меня, даже если поле является строкой. Еще не пробовал. – jason328

ответ

0

Решение для этого - вид. Создание представления в базе данных для доступа к таблице:

create view vw_table as 
    select <columns that you want> 
      <code to convert datetime here> as NSDate 
    from t; 

Вы можете использовать представление в приложении, а не за столом.

+0

Теперь мне нужно выяснить, как это сделать через Rails. – jason328

+0

Я считаю, что это так же просто, как использование обычной таблицы. Просто создайте модель поверх представления так же, как и таблицу. –

1

мнение идея не обязательно плохой, но я мог бы предложить поставить атрибут date_string на вашей Message модели, как это:

class Message 
    def date_string 
    date.to_s # or however you want to format it 
    end 
end 

Затем, когда вы предоставляете свой JSON, включают в себя date_string. Я не знаю, что вы используете для рендеринга своего JSON, но у меня был отличный опыт работы с RABL.

+0

Боковое примечание: я бы рекомендовал преобразовать в строку вместо NSDate, так как я не вижу в ней ответственности вашего приложения Rails, чтобы узнать, какие приложения будут потреблять его данные. Пусть Rails-приложение является агностиком, и пусть приложение iOS преобразует общую строку в NSDate. –

+0

Большой вопрос: тогда будет ли строка NSDate регистрироваться в моем приложении Rails, когда я хочу фильтровать запрос через это поле? – jason328

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