Rails: выбор комментариев пользователей за последний день - PullRequest
0 голосов
/ 25 августа 2011

У меня есть модель пользователя.У меня есть модель комментариев.Вот их отношение:

User.rb:
  has_many :replies, :through => :items, :source => :comments

Я пытаюсь распечатать все ответы пользователя за прошедший день.Таким образом:

user.replies.find(:all, :conditions => [" created_at between ? AND ?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day])

И вот проблема, которую я получаю:

ruby-1.9.2-p180: 038> bob.replies.all (: условие => ["create_at между? AND?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day]) ActiveRecord :: StatementInvalid: Mysql :: Error: Столбец 'made_at' в выражении where, где неоднозначно: SELECT comments.* FROM comments INNER JOIN items ON comments .item_id = items .id WHERE ((items .user_id = 16)) AND (создан_at между '2011-08-25 00:00:00'AND '2011-08-25 23:59:59')

Похоже, проблема в том, что у меня есть отношение Пользователь - Комментарий.Но я не совсем понимаю, что происходит и как это исправить.Помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 25 августа 2011

Вам необходимо заменить created_at на comments.created_at в ваших условиях. Как видно из сгенерированного запроса, здесь объединены две таблицы: comments и items, обе они имеют created_at. Так что ваш БД немного запутался, о чем говорят созданные вами.

0 голосов
/ 25 августа 2011

рубин это правильно; однако вы также можете переписать его так:

User.replies.find(:all, :conditions => {:created_at => Time.zone.now.beginning_of_day..Time.zone.now.end_of_day})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...