私は3つの書類を持っています。
User
List
Food
リストには多くの食品を含めることができ、ユーザー ドキュメント内に埋め込まれます。ユーザーが食品を使い終わったときに、ユーザーのリストをループし、リストとユーザーが完了した特定の食品との間の関連付けを削除するアクションがコントローラーにあります。
@user.lists.to_a.each do |list|
list.food_ids.to_a.map do |food_id|
if food_id.eql? params[:food_id]
food = Food.find(params[:food_id])
# Pull food from list
list.pull(:foods, food)
end
end
end
@user.save
私のモデル
ユーザー
class User
# INCLUDES
# ========
include Mongoid::Document
include Mongoid::Paperclip
include Mongoid::MultiParameterAttributes
include Mongoid::Spacial::Document
# EMBEDDING
# =========
embeds_many :lists
# NESTED ATTRIBUTES
# =================
accepts_nested_attributes_for :lists
end
リスト
class List
include Mongoid::Document
has_and_belongs_to_many :foods
embedded_in :user
belongs_to: popular_list
end
食べ物
class Food
# INCLUDES
# ========
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Paperclip
include Mongoid::Spacial::Document
# ASSOCIATIONS
# ============
belongs_to :user
has_and_belongs_to_many :popular_lists
end
問題は、私のコードがリストから食品を削除しないことです。私の質問は、どのように配列をループし、その配列からアイテムを取得し、新しい配列が保存されることを期待できるでしょうか?