Has_many y scaffold

Hola, Estoy probando la funcionalidad que ofrece ror con su generador
scaffold, tengo dos tablas:

<< POSTS >>

create_table :posts do |t|
t.column :nombre, :string
t.column :descrip, :text
end
class PostController < ApplicationController
scaffold :post
end

class Post < ActiveRecord::Base
validates_presence_of :nombre
has_many :comments
end

<<< COMMENTS >>

create_table :comments do |t|
t.column :post_id, :integer
t.column :nombre, :string
end

class CommentController < ApplicationController
scaffold :comment
end

class Comment < ActiveRecord::Base
validates_presence_of :nombre
belongs_to :post
end

Mi problema es que en controller Comments, nunca me aparece post_id,
cuando teoricamente “la magia” del scaffold deberia encontrar esa
relación, ¿Alguien me puede ayudar con esto?

Un saludo y gracias
Ricardo

Ricardo wrote:

Hola, Estoy probando la funcionalidad que ofrece ror con su generador
scaffold, tengo dos tablas:

El uso del método scaffold ha quedado obsoleto (deprecated), intenta
generando el scaffold :

ruby script/generate scaffold project

por ejemplo.

Espero te sirva.
Saludos.

Jaime Mora R.

Hola Jaime, gracias por contestar, tambien me pasa lo mismo, la verdad
no lo entiendo, he probado activeScaffold y si que detecta la relacion,
pero con el scaffold generator, nada.

Un saludo

Jaime Mora R. escribió:

Ricardo wrote:

no lo entiendo, he probado activeScaffold y si que detecta la relacion,
pero con el scaffold generator, nada.

Hola Ricardo, el Scaffold de Rails simplemente es un soporte inicial con
acciones fundamentales de CRUD, que empiezas a tocar para que funcione
acorde a tus necesidades. Esto representa una gran ventaja, que puedas
ver toda la maquinaria funcionando. Si realmente estás dispuesto a dar
un salto al nuevo paradigma de desarrollo en Rails, te recomiendo
estudies REST [1]. En esta lista encontrarás hilos que hablan sobre el
tema. Además te recomiendo la lectura “Descubriendo un mundo de
recursos en Rails” por David Heinemeier H. [2].

[1]
http://sobrerailes.com/articles/2007/6/20/tutorial-desarrollo-rest-con-ruby-on-rails

[2] http://media.rubyonrails.org/presentations/worldofresources.pdf

Espero te sirva.

Jaime Mora R.

Hola Jaime, hasta ahora he estado trabajando con symfony, el scaffold de
symfony si que generaba los campos de las FK, por eso no entendía como
ror no lo genera. Seguramente estoy cometiendo algún error, y no lo he
notado. Probando las relaciones has_many para recuperar los objetos con
@user.commnets.find(:all) , el comportamiento es el esperado, pero me ha
surgido otra duda, :). al solicutar los objetos en el controller
@user.commnets.find(:all) y por ejemplo volver a solicitarlos desde la
vista @user.commnets, me vuelve a hacer una consulta a la base de datos
cuando ya deberian estar cacheados dentro del propio objeto
@user.commnets, ¿Me equivoco?

Volviendo al tema del scaffold, creo que dejaré de perder tiempo en la
vista del scaffold y me centraré en preparar la aplicación al paradigma
REST como muy bien me has recomendado, ( por cierto muy buen libro y my
buena traducción ). Os iré contando

Un saludo y muchas gracias
Ricardo

Jaime Mora R. escribió:

Ricardo wrote:

surgido otra duda, :). al solicutar los objetos en el controller
@user.commnets.find(:all) y por ejemplo volver a solicitarlos desde la
vista @user.commnets, me vuelve a hacer una consulta a la base de datos
cuando ya deberian estar cacheados dentro del propio objeto
@user.commnets, ¿Me equivoco?

Hola Ricardo,

Active Record tiene una caracteristica denominada “eager loading”, la
cuál puedes recuperar objetos desde un modelo e incluir objetos
asociados mediante una sola consulta a la base de datos. Esto se logra
utilizando la opción :include al invocar al método find :

User.find(:all, :include => [“comments”])

Espero te sirva.
Saludos.

Jaime Mora R.