доступ к параметрам записи с номером отношения ActiveRecord

Я пытаюсь получить запись в БД, имея эти две строки в одной из моих моделей:

a = Arel::Table.new(:receivers)
e = Receiver.where(a[:name].matches('%afsane%'))

В моей таблице приемников у меня есть строка, в которой столбец имени равен «afsane». Я хочу иметь идентификатор этой строки в моей модели. но, напечатав e в моей модели, я получил следующее:

"========#<Receiver::ActiveRecord_Relation:0x0056094261eff8>============"

который дает номер отношения, но не параметры. Когда я запустил их в консоли rails, я получил такой ответ:

 #<ActiveRecord::Relation [#<Receiver id: 2, name: "afsane", created_at: "2016-09-27 09:24:16", updated_at: "2016-10-09 10:10:02">]>

Мне удалось сделать это в моей модели, но я не смог.

ps: Использование Rails 5.

Есть идеи?


person Afsanefda    schedule 25.10.2016    source источник


Ответы (1)


Я не уверен, как выглядит переменная a, но переменная e является коллекцией. where возвращает коллекцию, что означает, что вам придется пройти через e, чтобы извлечь некоторые данные.

Вот так:

e.each do |data|
  data.name
end

Если вы хотите вернуть только 1 результат, вы можете просто сделать следующее:

e = Receiver.where(a[:name].matches('%afsane%')).limit(1)

Примечание: я постарался ответить простым, но есть более элегантные решения, поэтому я рекомендую вам прочитать ActiveRecord Rails Гиды

person Community    schedule 25.10.2016
comment
Спасибо. Вы были правы насчет лимита. Я исправил код с первым, который дает первый столбец совпадений. - person Afsanefda; 29.10.2016