簡體   English   中英

Ruby on Rails“ has_many:through”關聯返回一個數組

[英]Ruby on Rails “has_many :through” association return an array

我創建了一個“ has_many:through”關聯。 我有一個帖子,類別和分類模型。 此分類模型具有一個分類表,該表將所有post_id鏈接到category_id。 每個帖子都有多個類別,每個類別都有多個帖子。 如果要調用類別,我想列出所有帖子,但是要做到這一點,我必須制作一個數組並將其存儲在post_ids中。 該數組存儲在@post_ids中。 我如何從中創建一個數組:“ Categorization.find_by(category_id:@category_id).post_id”並將其存儲在@post_ids中?

def index
  if params[:category].blank?
  @posts = Post.all.order("created_at DESC")
else
  @category_id = Category.find_by(name: params[:category]).id
  @post_ids = Categorization.find_by(category_id: @category_id).post_id
  @posts = Post.where(id: (@post_ids)).order("created_at DESC")
end

提前致謝!

檢索ActiveRecord對象后

a = Categorization.where(category_id: @category_id)

使用pluck通過以下方式檢索所有post_id

a.pluck(:post_id) # Ensure that pluck is a ActiveRecord call and can only be used on Active Record objects.

這種方法似乎更清潔。

只需更換

@post_ids = Categorization.find_by(category_id: @category_id).post_id

@post_ids = Categorization.where(category_id: @category_id).map(&:post_id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM