Rails: A find tip
Търсенето за записи в база данни вероятно е първото нещо, което сте научили след като сте минали през процеса “Как да инсталирам Rails на моята машина?”. И понеже като повечето неща в този framework и търсенето е направено достатъчно интуитивно – няма начин да сте срещнали някакви неудобства.
Нека обаче вземем за пример следната табилца:
mysql> DESCRIBE posts; +------------+--------------+------+-----+---------+-------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+-------------+ | id | int(11) | NO | PRI | NULL | auto_inc... | | title | varchar(255) | YES | | NULL | | | body | text | YES | | NULL | | | published | tinyint(1) | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | +------------+--------------+------+-----+---------+-------------+ 6 rows in set (0.00 sec)
Стандартно форматът за търсене на първият запис в таблицата Posts, който има заглавие, съвпадащо с “rails” би трябвало да изглежда по този начин:
@condition = "rails" @post = Post.find (:first, :conditions=>["title LIKE ?", "%#{@condition}%"] )
Това е перфектен вариант когато търсите срещане за даден стринг само в определена колона от БД. Ако обаче искате да намерите първият записи в таблицата Posts, който съдържа “rails” и в заглавието и в тялото си, ще трябва да модифицирате горният пример по следния начин:
@condition = "rails" @post = Post.find (:first, :conditions=>["title LIKE ? AND body LIKE ?", "%#{@condition}%", "%#{@condition}%"] )
Работещо, но грозно решение, което ме накара да поровя малко из документацията. В крайна сметка стигнах до следното, поне според мен, много по-красиво и практично справяне с проблема:
@condition = "rails" @post = Post.find (:first, :conditions=>["title LIKE :what AND body LIKE :what", {:what=>"%#{@condition}%"}] )
Маркери: find, rails, tip
За тази статия
В момента четете "Rails: A find tip", статия в stinger's thoughts
Отпечатване на статията
- Публикувана на:
- 29.07.2008 в 13:00
- Категория:
- Web Development
- Изпращане:
- Изпрати чрез email
Категории
- Books (10)
- Linux/UNIX (66)
- Movies (32)
- Music (73)
- Web Development (59)
- Други (182)






















IE8 Webslice
RSS с публикации
Няма коментари
RSS с коментaрите