Pasado todo el día en Google, pero no puedo encontrar una respuesta. : \Rieles: tiene y pertenece a muchos (HABTM) - crear asociación sin crear otros registros
Tengo una relación HABTM entre usuarios y Core_Values.
class CoreValue < ActiveRecord::Base
has_and_belongs_to_many :users
class User < ActiveRecord::Base
has_and_belongs_to_many :core_values
En mi controlador, tengo que hacer dos cosas separadas:
- Si no existe un CoreValue, crear uno nuevo y asociarlo con un identificador de usuario dado, y
- Suponiendo conozco a un CoreValue particular, existe ya, crear la asociación sin crear nuevos usuarios o CoreValues
para # 1, tengo que esto funcione:
User.find(current_user.id).core_values.create({:value => v, :created_by => current_user.id})
Esto crea un nuevo CoreValue con: value y: created_by y crea la asociación.
Para el n. ° 2, probé algunas cosas, pero no puedo crear la asociación SOLAMENTE.
Gracias por su ayuda!
Gracias! No sabía que core_values era una matriz, y ciertamente no sabía que agregarla crearía un INSERT. ¡Dulce! ¿Alguna manera de crear solo la asociación si el registro no existe? Buscaré los métodos de matriz, supongo. Tal vez current_user.core_values.include? – jmccartie
@jmccartie Esa podría ser una forma de hacerlo, sí. Para aclarar, creo que debería añadir que 'core_values' no es * siempre * una matriz, como saben, pueden llamar a' core_values.create', que no es un método de matriz válido. Una mejor definición sería que "actúa como una matriz". – vonconrad
gracias por el seguimiento. ¿incluir? no funcionará tratando de averiguar si puedo encontrar la nueva ID core_value dentro de current_user.core_values ... hmmmm – jmccartie