2015-06-22 2 views
0

Предположим, у меня есть attrs first_name и last_name для пользователя. Я знаю, что полное имя пользователя - «Johnny Appleseed», так как у меня есть большой Hash полных имен пользователя в виде строк.Строка конкатенации двух атрибутов в Rails, где запрос

Конечно, я мог бы разделить каждую строку первой, и поиск так: User.where(first_name: 'Johnny', last_name: "Appleseed")

НО, мне интересно, если есть способ в основном CONCAT два в запросе, по существу, например, так: User.where('first_name + last_name = ?', 'Johnny Appleseed')

Или, если бы у меня был метод full_name в модели пользователя и поиск по этому вопросу?

def full_name 
    "#{self.first_name} #{self.last_name}" 
    end 

User.where('full_name = ?', 'Johnny Appleseed')

ответ

3

Возможно, самым простым решением было бы:

User.where(%q(concat_ws(' ', first_name, last_name) = ?), 'Johnny Appleseed') 
+0

это работает, спасибо! По производительности, это медленно, но он выполняет свою работу. Я не знал о «concat_ws», спасибо, что показал мне что-то новое. –

Смежные вопросы