ruby на рельсах отображает атрибуты для определенных столбцов - PullRequest
2 голосов
/ 27 июня 2011

@models.map(&:attributes)) возвращает список хэшей от каждого столбца до его значения в БД

Как ограничить его, чтобы возвращались только определенные столбцы (например, только имя и идентификатор?).

Кроме того, как мне объединить несколько столбцов в новую пару ключ => значение? Например, если у пользователя есть first_name и last_name, приведенное выше вернет

[{"first_name" => "foo", "last_name" => "bar"}] but I want it to be [{"name" => "foo bar"}]

Как мне добиться этого преобразования? Спасибо!

1 Ответ

6 голосов
/ 27 июня 2011

Для первой части (ограничение атрибутов в хэше):

@models.map {|model| model.attributes.slice(:id, :name)}

Для объединения нескольких атрибутов в новый атрибут самым чистым способом обычно является метод доступа:

class User < ActiveRecord::Base
  def name
    "#{first_name} #{last_name}"
  end
end

Затем создайте хеш вручную во время итерации:

@models.map {|model| {:id => model.id, :name => model.name}}

Если вы используете более одного атрибута из хеша атрибутов, вы можете использовать слияние:

@models.map do |model|
  model.attributes.slice(:id, :first_name, :last_name).merge(:name => model.name)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...