【问题标题】:Hide record in Rails model if nested_attributes are empty如果 nested_attributes 为空,则隐藏 Rails 模型中的记录
【发布时间】:2014-10-09 02:04:37
【问题描述】:

我的 Rails 应用程序中有两个模型:ListingListingPhoto。我想在我的模型上设置某种范围,以删除没有嵌套 ListingPhotos 的 Listings。这些是从外部 API 中提取的,所以我没有简单的方法来控制这些保存。

Listing 看起来像这样:

class Listing < ActiveRecord::Base

  acts_as_taggable_on :listing_types

  has_many :listing_photos
  accepts_nested_attributes_for :listing_photos, allow_destroy: true

  private

end

ListingPhoto 看起来像这样:

class ListingPhoto < ActiveRecord::Base
  belongs_to :listing
  validates :listing, presence: true
  mount_uploader :photo, PhotoUploader
end

我需要向我的Listing 模型添加什么来阻止出现空照片集的列表?

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-4 model nested-attributes


【解决方案1】:

您可以在列表模型中添加静态方法:

def self.with_photos
    includes(:listing_photos).where.not(:listing_photos => {:listing_id => nil})
end

然后轻松调用:

Listing.with_photos

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2012-01-08
    • 2013-04-02
    • 2020-11-06
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多