# Immagini associate a diversi modelli

**URL:** <https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259>\
**Category:** IT\
**Created:** [September 1, 2006, 5:58pm UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259 "2006-09-01T17:58:49Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pilu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/50afbb/32.png) [@Pilu](https://www.ruby-forum.com/u/Pilu)\
**Post date:** [September 1, 2006, 5:58pm UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259/1 "2006-09-01T17:58:49Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Pilu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/50afbb/32.png) [@Pilu](https://www.ruby-forum.com/u/Pilu)\
**Post date:** [September 1, 2006, 6:02pm UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259/2 "2006-09-01T18:02:49Z")

</div>

> 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

---

<div class="post-metadata">

**Author:** ![Pilu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/50afbb/32.png) [@Pilu](https://www.ruby-forum.com/u/Pilu)\
**Post date:** [September 2, 2006, 10:02am UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259/3 "2006-09-02T10:02:03Z")

</div>

forse a te servono i “polymorphic associations”… hai letto  
[http://wiki.rubyonrails.org/rails/pages/UnderstandingPolymorphicAssociations](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?

---

<div class="post-metadata">

**Author:** ![Pilu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/50afbb/32.png) [@Pilu](https://www.ruby-forum.com/u/Pilu)\
**Post date:** [September 4, 2006, 2:44pm UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259/4 "2006-09-04T14:44:18Z")

</div>

On 9/2/06, Rob C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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…

---

<div class="post-metadata">

**Author:** ![Pilu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/50afbb/32.png) [@Pilu](https://www.ruby-forum.com/u/Pilu)\
**Post date:** [September 5, 2006, 9:27am UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259/5 "2006-09-05T09:27:28Z")

</div>

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.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![Pilu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/50afbb/32.png) [@Pilu](https://www.ruby-forum.com/u/Pilu)\
**Post date:** [September 5, 2006, 5:29pm UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259/6 "2006-09-05T17:29:05Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Pilu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/50afbb/32.png) [@Pilu](https://www.ruby-forum.com/u/Pilu)\
**Post date:** [September 5, 2006, 1:46pm UTC](https://www.ruby-forum.com/t/immagini-associate-a-diversi-modelli/67259/7 "2006-09-05T13:46:14Z")

</div>

> 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 😉
