Для того чтобы найти что-то в БД используется метод Find(из фреймворка ActiveRecord), который имеет следующий вид:
result=
User.find(:all/:first/:last,
:conditions=>"some conditions",
:order=>"some order",
:limit=>"count records in result")
:all/:first/:last - альтернативы поиска, разделены косой чертой чисто схематически, на самом деле для любого запроса испольовать разрешено только один из параметров. Соответственно они указывают что вернуть в запросе - все записи/первую/последнюю запись.
:conditions=>"some conditions" - это условия выборки, например:
:conditions=>"id = 1 and name='some name'"
или
:conditions=>["name= ? and lastname = ? ", name, lastname] - параметры передаются как Хеш.
:order=>"some order" - условие сортировки, например:
:order=>"name, age DESC" - сортируем сначала по имени(по алфавиту, параметр ASC можно опускать, так как это сортировка по-умолчанию), потом сортируем по возрасту, по
убыванию(указать надо явно).
:limit=>"count records in result" - количество возвращаемых записей, например:
:limit=>"10"
Дополнительные параметры добавлю в статью позже, если она будет пользоватся интиресом у читателей (:joins,:select,:offset,:from,:group,:lock,:readonly)
result=
User.find(:all/:first/:last,
:conditions=>"some conditions",
:order=>"some order",
:limit=>"count records in result")
:all/:first/:last - альтернативы поиска, разделены косой чертой чисто схематически, на самом деле для любого запроса испольовать разрешено только один из параметров. Соответственно они указывают что вернуть в запросе - все записи/первую/последнюю запись.
:conditions=>"some conditions" - это условия выборки, например:
:conditions=>"id = 1 and name='some name'"
или
:conditions=>["name= ? and lastname = ? ", name, lastname] - параметры передаются как Хеш.
:order=>"some order" - условие сортировки, например:
:order=>"name, age DESC" - сортируем сначала по имени(по алфавиту, параметр ASC можно опускать, так как это сортировка по-умолчанию), потом сортируем по возрасту, по
убыванию(указать надо явно).
:limit=>"count records in result" - количество возвращаемых записей, например:
:limit=>"10"
Дополнительные параметры добавлю в статью позже, если она будет пользоватся интиресом у читателей (:joins,:select,:offset,:from,:group,:lock,:readonly)
Как в conditions засунуть регулярное выражене?
ОтветитьУдалитья бы посоветовал использовать like
ОтветитьУдалитьUser.find(:all,:conditions=>["name like ?",params[:name]+"%"])
причем само выражения шаблона надо описывать в параметре,а не выражении(пример выше).
пример того как пользоваться Like смотрите тут: http://www.mysql.ru/docs/man/Pattern_matching.html
ОтветитьУдалитьафтар пиши исчо! в смысле что там говорилось про продолжение?!
ОтветитьУдалитьраз есть желающие почитать - пожалуйста. Завтра читайте первую статью из цикла - связывание моделей
ОтветитьУдалить