Конвертируйте результат Activerecord с ассоциациями has_one в один хэш для каждой записи - PullRequest
0 голосов
/ 02 сентября 2011

Если у меня есть результат из Activerecord, у меня есть массив хэшей, если я с нетерпением загружал ассоциации has_one, у каждого хэша записи есть вложенный хэш соответствующей записи.

У меня вопрос: есть ли быстрый метод rails, который позволяет объединять эти вложенные хеши в один хеш для каждой записи?

По аналогии можно преобразовать записи и их ассоциации в отдельные строки таблицы.

Другой аналогией может быть преобразование хэша вложенных хэшей на n уровнях в хэш одного уровня.

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Подход 1:

Включить их в предложение select

class User
  has_one :profile
end

class Profile
  belongs_to :user
  # street1, street2, city etc
end

profiles = Profile.joins(:user).select("users.*, profiles.*").all
profiles.first.login

Подход 2:

Использовать делегирование

class Profile
  belongs_to :user
  # street1, street2, city etc
  delegate :name, :name=, :email, :email=, :to => :user  
end
0 голосов
/ 02 сентября 2011

А как насчет метода сглаживания?http://www.ruby -doc.org / ядро ​​/ классов / Array.html # M000280

...