Tengo un modelo de Publicaciones y un modelo que registra las descarga
de dichas publicaciones.
Tal y como viene en la documentación que me facilitas, creo que tienes
razón, y debe de ser belongs_to, ya que la estructura de mi tabla
descargas es:
Id
publicacion_id : integer
fecha: date
email_id :string
Is it a belongs_to
http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M000980
or has_one
http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M000979
association?
Both express a 1-1 relationship. The difference is mostly where to place
the foreign key, which goes on the table for the class declaring the
belongs_to
http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M000980
relationship. Example:
class User < ActiveRecord::Base
# I reference an account.
belongs_to :account
end
class Account < ActiveRecord::Base
# One user references me.
has_one :user
end
The tables for these classes could look something like:
CREATE TABLE users (
id int(11) NOT NULL auto_increment,
account_id int(11) default NULL,
name varchar default NULL,
PRIMARY KEY (id)
)
CREATE TABLE accounts (
id int(11) NOT NULL auto_increment,
name varchar default NULL,
PRIMARY KEY (id)
)
Aún asÃ, me sigue sin funcionar.
Saludos y gracias por el interés.
Fernando González MacÃas
fgonzalez @ grupojoly.com
De: [email protected]
[mailto:[email protected]] En nombre de Omar J.
Enviado el: lunes, 06 de octubre de 2008 19:22
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] (no subject)
mm luego me confundo con las relaciones pero que no es belongs to en
Descarga ?
corrijanme si me equivoco porfas
http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html
revisa la parte de “Is it a belongs_to or has_one association?”
class Descarga < ActiveRecord::Base
belongs_to :publicacion
end
El 6 de octubre de 2008 12:08, Fernando González MacÃas
[email protected] escribió:
He probado ambas opciones y me sigue saliendo lo mismo. Os pongo las
relaciones por si os diera alguna pista.
Tengo que seguir mirando
class Descarga < ActiveRecord::Base
has_one :publicacion
end
class Publicacion < ActiveRecord::Base
has_many :descargas
end
Saludos
Fernando González MacÃas
fgonzalez @ grupojoly.com
De: [email protected]
[mailto:[email protected]] En nombre de Omar J.
Enviado el: lunes, 06 de octubre de 2008 18:24
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] (no subject)
prueba tratando en vez de
@descarga.publicacion_id = @publicacion
poner
@descarga.publicacion = @publicacion ( esto suponiendo que en tu modelo
Descarga tienes belongs_to :publicacion o algo similar
o tambien
@descarga.publicacion_id = @publicacion.id
porque como lo pones se supone que @publicacion deberia tomar el id y
ponertelo aunque no se bien que reglas siga porque en algunos metodos si
funciona por ejemplo un redirect_to :action => :show, :id => @descarga
pero en otros no y mejor poner @descarga.id
El 6 de octubre de 2008 11:15, Fernando González MacÃas
[email protected] escribió:
Tengo dos modelos Descargas y Publicacion. Aparte tengo un modelo User
para registrar los logoneos en la pagina y las descargas realizadas.
En el fichero new.html.erb tengo el siguiente código que me genera una
lista desplegable con todas las publicaciones existentes, para
seleccionar.
<% @selected = @descarga.publicacion.id if @descarga.publicacion %>
<%= options_from_collection_for_select( Publicacion.find(:all), :id,
:nombre, @selected) %>
En el método create del fichero descargas_controller.rb tengo el
siguiente código:
def create
@descarga = Descarga.new(params[:descarga])
@publicacion = Publicacion.find(params[:publicacion])
@descarga.publicacion_id = @publicacion
respond_to do |format|
if @descarga.save
flash[:notice] = 'El registro se guardó correctamente.'
format.html { redirect_to(@descarga) }
format.xml { render :xml => @descarga, :status => :created,
:location => @descarga }
else
format.html { render :action => "new" }
format.xml { render :xml => @descarga.errors, :status =>
:unprocessable_entity }
end
end
end
Al entrar en http://localhost.3000/descargas/new
ActiveRecord::AssociationTypeMismatch in DescargasController#create
Publicacion(#38299390) expected, got String(#21132310)
Veo que estoy obteniendo un String, y esté esperando otra cosa, pero no
veo el error.
Perdón, si es muy evidente, pero estoy empezando con esto de RoR, y los
comienzos siempre son difÃciles.
Saludos y gracias…
Fernando González MacÃas
fgonzalez @ grupojoly.com
Ror-es mailing list
[email protected]