Ruby on Rails | Виртуальные атрибуты в условиях - PullRequest
2 голосов
/ 17 января 2012

Есть ли способы использовать виртуальные атрибуты в качестве условий в поиске Rails?

Например:

Friend.find(:first, conditions: { full_name: 'Chandler Bing' })

Friend.where(login: 'chandler_bing@friends.tv', password: 'secret')

# `full_name' and `password' are virtual attributes

Спасибо.

Ответы [ 3 ]

3 голосов
/ 17 января 2012

Я использую что-то подобное в недавнем проекте. Я использую его, чтобы выбрать записи, которые находятся в определенном диапазоне дат. Я не использую искатель, но область.

scope :since, lambda {|from, to| {:conditions => {:created_at => (from .. to)}}}

Это тогда называется как Model.since from, to, где поле created_at из Model проверяется по заданному диапазону.

Чтобы сделать это для виртуальных атрибутов, вы должны создать виртуальное поле в своей области. Подобно совпадению в полях first_name и last_name, чтобы создать совпадение для full_name

1 голос
/ 17 января 2012

Виртуальные атрибуты в общем случае не сохраняются в базе данных. Они рассчитываются либо во время сохранения записи, либо после извлечения записи из базы данных. Вы не можете сделать это тогда!

1 голос
/ 17 января 2012

Что такое виртуальный атрибут? Атрибут не поддерживается полем базы данных?

Тогда ты не сможешь этого сделать.

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