Immagini associate a diversi modelli

Ho una tabelle images con i campi

  • id
  • path
  • name

Ogni immagine potrà essere associata a vari tipi di modelli…tipo
user, category etc…
Se nel modello User, che hail campo image_id, metto:

has_one :image

e faccio:

image = user.image

rails mi da ovviamente errore xkè in images non c’è il campo user_id.
Una soluzione potrebbe essere:

image = Image.find(user.image_id)

E’ la soluzione migliore? come vi comportereste voi?

-pilu

image = Image.find(user.image_id)

o forse creare il modello in questo modo?

class User < ActiveRecord::Base
def image
Image.find self.image_id
end

def image=(image)
self.image_id = image.id
end

end

forse a te servono i “polymorphic associations”… hai letto
http://wiki.rubyonrails.org/rails/pages/UnderstandingPolymorphicAssociations
?

class User < ActiveRecord::Base
has_many :images, :as => :resourcable
end

class Image < ActiveRecord::Base
belongs_to :resourcable, :polymorphic => true
end

In questo caso dovresti aggiungere alla tabella images:

t.column “resourcable_id”, :integer
t.column “resourcable_type”, :string

hmmm… In ogni caso sarà la tabella “images” che contiene il ID
altrimenti dovresti fare belongs_to :image ma non vuoi fare quello
vero?

On 9/2/06, Rob C. [email protected] wrote:

end

In questo caso dovresti aggiungere alla tabella images:

t.column “resourcable_id”, :integer
t.column “resourcable_type”, :string

hmmm… In ogni caso sarà la tabella “images” che contiene il ID
altrimenti dovresti fare belongs_to :image ma non vuoi fare quello
vero?

Grazie Rob cosi funziona…xò in questo modo ogni immagine è associata
ad un altro oggetto…io volevo fare in modo che fossero
“libere”…senza salvare
l’id del “parent” in images…

On Sep 1, 2006, at 5:56 PM, Pilu wrote:

has_one :image
E’ la soluzione migliore? come vi comportereste voi?
class User
belongs_to :image
end


Stefano C.
[email protected]

ho suggerito i polymorphic associations perché volevi associare un
immagine a diversi modelli ma se puoi usare un metodo più semplice è
meglio!

class User
belongs_to :image
end

Si in effetti puo essere un idea anche se non ha senso dire che
l’utente appartiene ad un immagine dato che è il contrario…cmq può
essere una soluzione :wink: