В методе редактирования многих контроллеров вы инициализируете новый объект и редактируете существующие объекты
class MagazinesController < ApplicationController
def edit
@magazine = Magazine.find(params[:magazine_id])
@page = Page.find(params[:id])
@new_page = @magazine.pages.new
end
end
Однако в представлении вам часто захочется циклически перебирать объекты и обрабатывать новый объект отдельно
# magazines#edit
%h4 Existing pages
- @magazine.pages.each do |page|
%p= link_to page, page.title
Проблема
... заключается в том, что ассоциация pages
содержит как существующие (сохраненные) страницы, так и новую страницу, которую мы сделали с помощью @new_page = @magazine.pages.new
.
Легко справиться с этим, однако это уродливое
%h4 Existing pages
- @magazine.pages.each do |page|
- if page.persisted?
%p= link_to page, page.title
Я хотел бы использовать некоторый метод связывания для выбора только тех страниц, которые сохраняются:
%h4 Existing pages
- @magazine.pages.persisted.each do |page|
%p= link_to page, page.title
Есть ли способ сделать это?