получить результаты нарезки после выполнения SQL - PullRequest
1 голос
/ 22 ноября 2011

Я занимаюсь разработкой Rails приложения.

после того, как я выполню команду sql , как показано ниже:

sql="select * from some_tbl;"
rslt = ActiveRecord::Base.connection.execute(sql)

как я могу получить нарезанные результаты из rslt?

Я имею в виду, например, что если rslt.size равно 200, я хотел бы получить 20 результатов, начиная с 5-го (что подобно операции с массивом arr[5,20]), как это сделать?

Ответы [ 4 ]

2 голосов
/ 22 ноября 2011

Если вам не нужно извлекать все экземпляры таблицы, вы можете сделать:

Model.offset(5).limit(20)

Вы должны прочитать это, это, вероятно, поможет: http://guides.rubyonrails.org/active_record_querying.html#limit-and-offset

2 голосов
/ 22 ноября 2011

Попробуйте преобразовать rslt в массив:

...
rslt.to_a[5,20]
0 голосов
/ 22 ноября 2011

Объект, возвращаемый из ActiveRecord::Base.connection.execute, фактически является Array, что означает, что вы можете использовать rslt[5,20] для получения 20 результатов, начиная с 6-го элемента.

Я также хотел бы отметить, что вы можете использовать find_in_batches, который представляет собой API, предоставляемый ActiveRecord .

Пример, приведенный на странице API:

Person.where("age > 21").find_in_batches do |group|
  sleep(50) # Make sure it doesn't get too crowded in there!
  group.each { |person| person.party_all_night! }
end

РЕДАКТИРОВАТЬ: извините, это не сработало для вас. прямо с моего рельса (3.0.10) консоль

ruby-1.8.7-p299 :006 > sql = "select * from domains"
 => "select * from domains" 
ruby-1.8.7-p299 :007 > ActiveRecord::Base.connection.execute(sql).class
 => Array 
ruby-1.8.7-p299 :008 > ActiveRecord::Base.connection.execute(sql).length
 => 18 
ruby-1.8.7-p299 :010 > ActiveRecord::Base.connection.execute(sql)[5,20].length
 => 13 
0 голосов
/ 22 ноября 2011

Вам не нужно использовать sql в рельсах, которые вы используете ActiveRecord для создания, чтения, обновления и удаления записей в базе данных. Вам следует прочитать руководства для начинающих из http://guides.rubyonrails.org/, особенно раздел Model будет интересен для вас, поскольку речь идет о работе с базой данных!

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