Способ перебрать как постоянных, так и непостоянных детей? - PullRequest
0 голосов
/ 26 сентября 2018

Должен быть способ сделать это, которого мне не хватает.Допустим, у меня есть ...

Category
  has_many :products

Product
  belongs_to :category

Теперь я создаю несколько новых дочерних элементов в памяти (скажем, внутри объекта формы) следующим образом:

category.products.build(name: "blah blah", etc...)

Используя .each вызывает ActiveRecord и выполняет итерацию только для постоянных дочерних элементов

category.products.each do |product|

Есть ли способ выполнить итерацию для ALL дочерних элементов, независимо от того, находятся ли они в памяти или сохранены в БД?И оставить в силе любое предложение .order ??

1 Ответ

0 голосов
/ 26 сентября 2018

Вы уверены, что не перезагружаете какую-либо категорию между созданием продуктов и их повторением?Просто сделал быстрый тест, и это, кажется, работает так, как вы намереваетесь (другие названия моделей, те же ассоциации):

2.5.1 :018 > c = Channel.first
  Channel Load (0.1ms)  SELECT  "channels".* FROM "channels" ORDER BY "channels"."id" ASC LIMIT ?  [["LIMIT", 1]]
 => #<Channel id: 1> 
2.5.1 :019 > c.channel_users.build
 => #<ChannelUser id: nil, enabled: nil, status: nil, last_grant_at: nil, channel_id: 1> 
2.5.1 :020 > c.channel_users.each { |cu| p cu }
  ChannelUser Load (0.2ms)  SELECT "channel_users".* FROM "channel_users" WHERE "channel_users"."channel_id" = ?  [["channel_id", 1]]
#<ChannelUser id: 1, enabled: nil, status: "blocking", last_grant_at: "2018-09-15 18:32:04", channel_id: 1>
#<ChannelUser id: nil, enabled: nil, status: nil, last_grant_at: nil, channel_id: 1>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...