Acabo de empezar con Rails, y en este foro tambien, y a la primera ya
tengo una duda que explico.
Tengo dos tablas, una de users con id, name, address, etc. y otra para
guardar fotos de cada usuario llamada photos con id, user_id y photo.
En el modelo de user he puesto has_many :photos y en de photo
belongs_to :user. En el listado de users he añadido un enlace que
presenta el formulario para gestionar las fotos de ese usuario.
tengo dos dudas, la primera, ¿como hago para que en el formulario de
photos solo salgan las que corresponden al usuario? y la segunda, al
añadir una foto en la tabla photos ¿como lleno el campo user_id ya que
no puede quedar a NULL?
Gracias
tengo dos dudas, la primera, �como hago para que en el formulario de
photos solo salgan las que corresponden al usuario?
Para ver las fotos de un usuario lo lógico es pasarle a la acción el id
del usuario en cuestión y asà en el find de Photo pasarselo como
:conditions => “user_id = #{id_usuario}”
y la segunda, al a�adir una foto en la tabla photos �como lleno el campo user_id > ya que no puede quedar a NULL?
Para asignar un modelo a otro tienes que hacer algo asÃ:
@objeto_photo = Photo.create(params[:photo]) # o el objeto si ya lo
habÃas creado antes
@user = User.find(id_usuario)
@user.photos << @objeto_photo
@user.save
De todos modos creo que deberÃas leerte un poco como funcionan las
relaciones entre modelos…, el libro de Agile Development with Rails
está muy bien. Si no lo tienes y quieres echar un vistazo rápido a la
documentación online usa esta url :
On 6/29/07, Jose Francisco G. [email protected] wrote:
tengo dos dudas, la primera, ¿como hago para que en el formulario de
photos solo salgan las que corresponden al usuario?
AsÃ:
@usuario = Usuario.find( id_del_usuario)
fotos = @usuario.photos
y la segunda, al
añadir una foto en la tabla photos ¿como lleno el campo user_id ya que
no puede quedar a NULL?
Pues según como lo tienes, es una relación 1:n, por lo que un usuario
puede
tener varias fotos, pero por ejemplo el usuario 1 no puede tener fotos
que
tenga el usuario 2.
Pues lo suyo serÃa que al hacer un formulario para guardar las fotos,
pusieses un combo con todos los usuarios. algo asÃ:
Foto
<%= password_field :photo, :photo%>
Usuario
<%= select(:photo, :user_id , User.find(:all).collect {|u| [
u.name u.id] }, { :include_blank => false })%>
Gracias