Este artículo fue evaluado por especialistas así se asegura la exactitud de esta reseña.
Solución:
¿Como esto?
⚡️ irb
2.2.2 :001 > [1,2,3] + [4,5,6]
=> [1, 2, 3, 4, 5, 6]
Pero no tienes 2 matrices.
Podrías hacer algo como:
@movie = Movie.first()
@options = Movie.order("RANDOM()").first(3).to_a << @movie
Hay dos partes en esta pregunta:
-
¿Cómo "fusionar dos matrices"? solo usa el
+
método:[1,2,3] + [2,3,4] => [1, 2, 3, 2, 3, 4]
-
¿Cómo hacer lo que quieres? (Lo que resulta que no es la fusión de dos matrices). Primero analicemos ese problema:
@movie
es una instancia de suMovie
modelo, que puede verificar con@movie.class.name
.@options
es unArray
que puede verificar con@options.class.name
.Todo lo que necesita saber ahora es cómo agregar un nuevo elemento a un array (es decir, agregue su
@movie
artículo a su@options
array)Lo haces usando la pala doble:
@options << @movie
esto es esencialmente lo mismo que algo como:
[1,2,3] << 4 => [1,2,3,4]
Para fusionar (hacer la unión de) matrices:
[1, 2, 3].union([2, 4, 6]) #=> [1, 2, 3, 4, 6] (FROM RUBY 2.6)
[1, 2, 3] | [2, 4, 6] #=> [1, 2, 3, 4, 6]
Para concatenar matrices:
[1, 2, 3].concat([2, 4, 6]) #=> [1, 2, 3, 2, 4, 6] (FROM RUBY 2.6)
[1, 2, 3] + [2, 4, 6] #=> [1, 2, 3, 2, 4, 6]
Para agregar un elemento a un array:
[1, 2, 3] << 4 #=> [1, 2, 3, 4]
Pero parece que no tienes arreglos, sino registros activos. Podrías convertirlo en array con to_a
pero también puedes hacerlo directamente:
Movie.order("RANDOM()").first(3) + [@movie]
que devuelve el array usted quiere.