rails3 группа по вопросу с sqlite3 - PullRequest
0 голосов
/ 14 апреля 2011

Следующий запрос должен работать, но он не работает.

class Keyword
  def self.popular_queries
    t = Time.now
    relation = Keyword.where(:created_at => (t.beginning_of_day..t.end_of_day))
    relation = relation.group(:name)
    relation = relation.select("name, COUNT(id) AS count_value")
    relation.to_a
  end
 end

результат следующий без значения счетчика

[#<Keyword name: "a">, #<Keyword name: "b">, 
#<Keyword name: "c">, #<Keyword name: "d">]

таблица ключевых слов имеет только два столбца name и идентификатор.

Решение

  def self.popular
    t = Time.now
    relation = Keyword.where(:created_at => (t.beginning_of_day..t.end_of_day))
    relation = relation.group(:name)
    relation = relation.select("name, created_at, count(*) as c1")
    sql = relation.to_sql
    self.connection.select_all(sql)
  end

1 Ответ

1 голос
/ 14 апреля 2011

Проблема в том, что ваша модель Keyword не знает, что такое count_value, а вы создаете экземпляр группы Keyword на основе запроса SQL.Когда ваши экземпляры созданы, они видят count_value в передаваемых ими данных, но игнорируют его, поскольку у них нет свойства count_value.

Если вы хотите запустить произвольный SQL и получить простые данные,Вы должны использовать select_rows или аналогичные методы низкого уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...