У меня есть модель пользователя. У меня есть модель комментариев. Вот их отношение:
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 (: conditions => ["created_at между ? И? ", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day]) ActiveRecord :: StatementInvalid: Mysql :: Error: столбец created_at в предложении where неоднозначен: SELECT
comments
. * FROMcomments
INNER JOINitems
ONcomments
. Item_id =items
. Id WHERE ((items
. User_id = 16)) AND (created_at между '2011-08-25 00:00:00' И '2011-08-25 23:59:59')
Похоже, проблема в моем отношении "Пользователь - комментарий". Но я действительно не понимаю, что происходит и как это исправить. Помощь приветствуется.
2 ответа
Вам необходимо заменить created_at
на comments.created_at
в ваших условиях. Как вы можете видеть в сгенерированном запросе, есть две соединенные таблицы: comments
и items
, у них обеих есть created_at
. Итак, ваш db немного запутан, о чем вы говорите.
Чушь правильная; однако вы также можете переписать его так:
User.replies.find(:all, :conditions => {:created_at => Time.zone.now.beginning_of_day..Time.zone.now.end_of_day})
Похожие вопросы
Новые вопросы
mysql
MySQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом (RDBMS), использующая язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. Д. Это разные БД, которые все используют свои собственные диалекты SQL для управления данными.