使用 Mongoid 向数组添加多个值

Add multiple value to an array with Mongoid

我想向一个数组添加多个值,但只是第一次添加,下次我想添加一些东西时,调用跳过 ***just before filter *** 注释的过程。代码来了:

class ContactController < ApplicationController
  def addNew
    @newFriend = params[:username]
    puts "***value of @newFriend***"
    puts @newFriend
    puts "***end****"
    User.find_by(username: current_user.username) do |user|
      puts "*** just before filter ***"
      user.contacts.find_or_create_by(owner: user.id) do |contact|
        puts "*** enters before find the friend user***"
        User.find_by(username: params[:username]) do |friend|
          puts "***enter on friend***"
          puts friend
          contact.push(friendlist: friend.id)
        end
        puts "***contact***"
        puts contact
        puts "***end****"
      end
    end
    redirect_to "/"
  end
end

已解决!

终于通过了ifelse里面两侧的触点。

class ContactController < ApplicationController
  def addNew
    @newFriend = params[:username]
    puts "***value of @newFriend***"
    puts @newFriend
    puts "***end****"
    User.find_by(username: current_user.username) do |user|
      puts "*** aqui entra justo antes de filtrar o crear***"
      puts user.contacts
      if user.contacts(owner: user.id).exists?
        puts "***despues de comprobar si existe entra***"
        user.contacts.find_by(owner: user.id) do |contact|
          puts "***despues de crear el contacto entra***"
          User.find_by(username: params[:username]) do |friend|
            contact.push(friendlist: friend.id)
          end
        end
      else
        user.contacts.find_or_create_by(owner: user.id) do |contact|
          puts "*** aqui entra justo antes de encontrar al usuario amigo***"
          User.find_by(username: params[:username]) do |friend|
            puts "***entra en friend"
            puts friend
            contact.push(friendlist: friend.id)
          end
        end
      end
    end
    redirect_to "/"
  end
end