gpt4 book ai didi

ruby-on-rails - 您如何仅引用事件记录关联中的持久记录

转载 作者:行者123 更新时间:2023-12-04 01:42:23 24 4
gpt4 key购买 nike

在许多 Controller 的编辑方法中,您初始化一个新对象并编辑现有对象

class MagazinesController < ApplicationController
def edit
@magazine = Magazine.find(params[:magazine_id])
@page = Page.find(params[:id])
@new_page = @magazine.pages.new
end
end

但是,在 View 中,您通常希望循环遍历持久化对象并单独处理新对象
# 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

有没有办法做到这一点?

最佳答案

您可以在 Page 模型中创建 persisted范围:scope :persisted, -> { where "id IS NOT NULL" } ,这避免了在每个关联页面上迭代以检查它是否是新记录。

关于ruby-on-rails - 您如何仅引用事件记录关联中的持久记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19842765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com