ruby-on-rails - generate - ruby on rails run migrations
Obtener asociaciones de rieles desde la consola. (5)
Agregue esto donde está debajo de / lib. Por ejemplo clone_deep.rb.
module CloneDeep
def clone_deep
kopy = clone
self.class.reflect_on_all_associations.each do |association|
next if association.macro == :belongs_to
cloned_object = case association.macro
when :has_many
self.send(association.name).collect { |item| item.clone_deep }
when :has_one
self.send(association.name) && self.send(association.name).clone_deep
else
clone
end
kopy.send("#{association.name}=", cloned_object)
end
return kopy
end
end
Crear nuevo inicializador bajo config / initializers / folder. Dentro de este archivo pegar
ActiveRecord::Base.send(:include, CloneDeep)
Ahora podrá clonar modelos con todas sus asociaciones has_one y hos_many.
cloned_person = person.clone_deep
cloned_person.save
Tengo un usuario modelo. Ahora, necesito todos los detalles de las asociaciones de la misma desde la consola. Y necesito saber si es uno-uno o uno-muchos. ¿Hay algún método para hacerlo?
Como soy un usuario nuevo, no puedo aclarar / responder a las publicaciones de otros. Observaré que debe volver a cargar la consola de los rieles antes de verificar cualquier cambio en las asociaciones.
Puede hacer esto para cualquier particular: - user = User.reflect_on_association (: user_profile) y user.macro
Usando los pry-rails gema podrá acceder al modelo, sus columnas y relaciones. Inclúyelo en tu Gemfile
, luego ejecutas bundle
. Puedes usar el comando show-models
cuando estés en tu consola de palanca. y obtendrás la información de todos tus modelos.
También puede ejecutar show-model (Model_Name)
para obtener información sobre un modelo específico
User.reflect_on_all_associations
Esto devolverá una serie de asociaciones similares a esto:
#<ActiveRecord::Reflection::AssociationReflection:0x00000105575548 @macro=:has_many, @name=:posts, @options={}, @active_record=User(id: integer, login: string), @collection=false>
Código de muestra:
reflections = User.reflect_on_all_associations
reflections.each do |reflection|
puts ":#{reflection.macro} => :#{reflection.name}"
end