Ручная установка свойства selected_at [Rails 3] - PullRequest
1 голос
/ 29 ноября 2010

Попытка установить дату созданного вручную:

entry = Entry.new
entry.text = tweet['text']
entry.source = 'tweet'
entry.user_id = user.id
entry.latitude = coords[1]
entry.longitude = coords[0]
entry.created_at = Chromium(tweet.created_at)

Получение следующей ошибки:

 undefined method `created_at' for #<Hash:0x1036af910>

Как этого избежать?Я хотел бы сохранить функциональность по умолчанию для созданного_телегата, поскольку не все записи вводятся таким образом.

Ответы [ 2 ]

3 голосов
/ 29 ноября 2010

Проблема в том, что в объекте tweet, который является хешем, нет метода created_at.Вы, вероятно, имели в виду

entry.created_at = Chromium(tweet['created_at'])

Однако, когда объект сохраняется в первый раз, Rails переопределит атрибут created_at.Это довольно фиксированное поведение, и вы не сможете переопределить его, не испортив что-либо еще.

Лучше создать новый столбец даты и времени, например tweeted_at, и использовать его.

3 голосов
/ 29 ноября 2010

Ваша проблема не в методе create_at объекта ActiveRecord. Я думаю, что ошибка в этом заключается в том, что метод created_at вызывается для вашего tweet объекта.

см. Выше - вы используете

entry.text = tweet['text']

(tweet - это хеш) ... но тогда

entry.created_at = Chromium(tweet.created_at)

жалуется, что в Hash нет метода с именем created_at

 undefined method `created_at' for #<Hash:0x1036af910>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...