Problema con relaciones

hola lista tengo una relacion 1 a muchos entre fuente y url

por otro lado tengo un formulario que me muestra todas las fuentes y sus
url el usuario puede picar mas de una url de cada fuente.
cuando le doy a aceptar quiero que
esos valores se guarden en una tabla,
para despues simplemente leer esta tabla para mostrar los valores por
pantalla sin estar haciendo busquedas
pero nose como relacionar la tabla (nueva) con el modelo de fuente y
url?? debe estar relacionado no??

he pensado en una relacion muchos a muchos pero si es asi no puedo
guardar las url de una fuente

se entinede
no quiero guardar en una tabla todas las relaciones entre url y fuentes
sino solo aquellas que marque el usuario

espero me puedan ayudar y saludos

2008/8/11 Maite P. [email protected]:

hola lista tengo una relacion 1 a muchos entre fuente y url

Hola Maite,

por favor, tómate tu tiempo y redacta los mensajes con cuidado y de
forma clara para que sean minimamente legibles y comprensibles.
Intenta releerlos antes de enviar para asegurarte de que una persona
que no conozca el problema se pueda hacer una idea aproximada de qué
te pasa y qué necesitas.


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o simplelogica.net
Recuerda comer mucha fruta y verdura.

El 11 de agosto de 2008 15:44, Maite P. <
[email protected]> escribió:

he pensado en una relacion muchos a muchos pero si es asi no puedo
guardar las url de una fuente

se entinede

Hola Maite, creo que no lo entinedo :stuck_out_tongue:

¿Puedes pasarnos los códigos de tus modelos Fuente y Url, con sus
relaciones? ¿No sería simplemente… “fuente has_many :urls” y “url
belongs_to :fuente”? ¿O quizá con has_and_belongs_to?

Por otro lado, creo que te puede dar problemas usar la palabra “Url”
como
nombre de modelo, ¿no es una palabra reservada?

hola lista, perdon si no me explique bien.
Vuelvo a exponer mi problema a ver si ahora me sale mejor. :slight_smile:

tengo dos modelos fuentes y direcciones donde una fuente tiene muchas
direcciones y una direccion pertenece a una fuente.

class Fuente < ActiveRecord::Base
has_many :direcciones , :dependent => :destroy
end

class Direccion < ActiveRecord::Base
belongs_to :fuente
end

class CreateDireccions < ActiveRecord::Migration
def self.up
create_table :direccions do |t|
t.string :categoria
t.text :descripcion
t.integer :fuente_id
t.timestamps
end

class CreateFuentes < ActiveRecord::Migration
def self.up
create_table :fuentes do |t|
t.string :nombre
t.text :descripcion
t.timestamps
end

puedo tener fuentes sin direccion, pero cada direccion debe tener una
fuente.
esto me lo hace bien escribo en la tabla direccion el fuente_id

ahora lo que quiero es que se le muestren al usuario todos las fuentes y
cada una de las direcciones que tienen asociadas dicha direccion, y que
el usuario pueda elegir varias direcciones y fuentes, y que esa eleccion
del usuario se guarde en una tabla.

y la pregunta es, la tabla esa donde se guarda lo que elegio el usuario
debe estar asociada al modelo fuente-1— *-direccion ??? como??

yo lo he estado pensando y se que queda algo como

fuente-1—-direccion -—1-agregadorRSS

pero claro ya esto es muchos a muchos y entonces no puedo guardar la
relacion entre direccion y fuente como en el 1 a muchos

espero qu me aclaren un poco, a lo mejor yo lo estoy haciendo mas
complicado de lo que es.

muchas gracias

El 12 de agosto de 2008 14:11, Maite P. <
[email protected]> escribió:

class Direccion < ActiveRecord::Base
t.timestamps
puedo tener fuentes sin direccion, pero cada direccion debe tener una
fuente.
esto me lo hace bien escribo en la tabla direccion el fuente_id

OK, ahora ya entiendo lo que tienes, en resumen

  • Fuente has_many :direccions
  • Direccion belongs_to :fuente
  • Usuario

ahora lo que quiero es que se le muestren al usuario todos las fuentes y
cada una de las direcciones que tienen asociadas dicha direccion, y que
el usuario pueda elegir varias direcciones y fuentes, y que esa eleccion
del usuario se guarde en una tabla.

Ya que cada direccion pertenece únicamente a una fuente, bastaría con
que
apuntaras qué direcciones ha elegido cada usuario. A través de la
dirección
puedes sacar la fuente.

Así que yo creo que te bastaría con un modelo Eleccion que relaciona a
los
usuarios con las direcciones elegidas. Por ejemplo:

class Eleccion < ActiveRecord::Base
belongs_to :user
belongs_to :direccion
end

etc…

Aunque como sugiere Manuel en su respuesta siguiente, esto puede
equivaler a
un modelo intermedio con has_many :through…

y la pregunta es, la tabla esa donde se guarda lo que elegio el usuario
debe estar asociada al modelo fuente-1— *-direccion ??? como??

yo lo he estado pensando y se que queda algo como

fuente-1—-direccion -—1-agregadorRSS

pero claro ya esto es muchos a muchos y entonces no puedo guardar la
relacion entre direccion y fuente como en el 1 a muchos

Sobre todo creo que tienes que tener claro que te puedes olvidar de
almacenar la fuente, ya que eso ya lo tienes controlado desde la propia
relación entre fuente y dirección. Lo que necesitas es sólo una tabla
intermedia entre usuarios y direcciones, con un modelo intermedio
llamado
Eleccion, Suscripcion, o como veas…

espero qu me aclaren un poco, a lo mejor yo lo estoy haciendo mas
complicado de lo que es.

Un poquito :slight_smile: Si no te aclaras con estas explicaciones lo miramos en más
detalle…

hola chicos he pensado en la solucion que me han dado y nose si
funcionara
la relacion fuente-1— *-direccion solo la va a tocar el administrador
de la página

el va a a poner nuevas fuentes y va a poner direcciones pertenecientes a
esa fuente, luego las va a listar y va a elegir sera algo como

fuente 1
direccion 1
direccion 2

fuente 2
direccion 1
direccion 2

etc…

las direcciones que el marque serán guardadas en una tabla (que es la
que nose relacionar con el modelo que ya tengo)

por último para mostrar las noticias en la web, solo tendre que leer
esta tabla(la que nose hacer)

asi a groso modo he implementado esto, pero aun no lo he probado
no he puesto a los usuario en la relacion, es que no entiendo porque
debe ir

-tablas-

table direccions
t.string :categoria
t.text :descripcion

table fuentes
t.string :nombre
t.text :descripcion

table recursos
t.integer :direccion_id
t.integer :fuente_id

-modelos-

class recurso
belongs_to :direccion
belongs_to :fuente

class fuente
has_many :recursos
has_many :direccions, :thought => :recursos

class direccion
has_many :recursos
has_many :fuentes, :thought => :recursos

esto creo que no me funciona, ya que fuente_id desaparece de la tabla
direccions y ya no puedo guardar la relación entre fuente y direccion.

alguna idea???
muchas gracias

2008/8/13 Maite P. [email protected]:

has_many :recursos
has_many :fuentes, :thought => :recursos

esto creo que no me funciona, ya que fuente_id desaparece de la tabla
direccions y ya no puedo guardar la relación entre fuente y direccion.

alguna idea???

Hola Maite,

  1. Tienes un error de sintaxis al escribir “thought” (pensamiento) en
    vez de “through” (a través de)

  2. tienes relacionado fuente y recurso por medio de un has_many
    :through pero si no entiendes por qué me temo que lo que te toca es
    repasar la documentación hasta que entiendas qué es y en qué consiste
    esta relación. Hay muchos tutoriales en la red y explicaciones en
    cualquiera de los principales libros publicados sobre Rails. Con
    lagunas tan grandes no podrás hacer nada fuera de lo muy básico.


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o simplelogica.net
Recuerda comer mucha fruta y verdura.

2008/8/12 Maite P. [email protected]:

y la pregunta es, la tabla esa donde se guarda lo que elegio el usuario
debe estar asociada al modelo fuente-1— *-direccion ??? como??

yo lo he estado pensando y se que queda algo como

fuente-1—-direccion -—1-agregadorRSS

pero claro ya esto es muchos a muchos y entonces no puedo guardar la
relacion entre direccion y fuente como en el 1 a muchos

Mucho mejor explicado, aunque confieso que el párrafo de la duda me
sigue resultando algo confuso :slight_smile:

¿Quieres decir que un usuario puede suscribirse a varios feeds? Te
sirve un simple has_many :through, con un modelo intermedio llamado
Suscripción
No me queda claro si el usuario tiene que suscribirse a Fuentes (si
una fuente es por ejemplo un blog y las direcciones son feeds
alternativos rss, atom) o a Direcciones (si la Fuente es un mero
contenedor como “ElPais.com” y cada dirección un feed con distinto
contenido por secciones, etc.) pero en todo caso bastaría con cambiar
la
asociación


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o simplelogica.net
Recuerda comer mucha fruta y verdura.