加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何仅引用活动记录关联中的持久记录

发布时间:2020-12-16 22:16:04 所属栏目:百科 来源:网络整理
导读:在许多控制器的编辑方法中,您可以初始化一个新对象并编辑现有对象 class MagazinesController ApplicationController def edit @magazine = Magazine.find(params[:magazine_id]) @page = Page.find(params[:id]) @new_page = @magazine.pages.new endend 但
在许多控制器的编辑方法中,您可以初始化一个新对象并编辑现有对象
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

问题

…是页面关联既包含了现有的(持久化的)页面,也包含了通过@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

有什么办法吗

解决方法

您可以在页面模型中创建一个持久化的范围:scope:persisted,– > {其中“id IS NOT NULL”},这避免了每个相关页面的迭代,以检查它是否是新的记录.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读