Ho due modelli: (Album e prodotto)Creare un'associazione tra due oggetti instancied
1) all'interno modelle
All'interno album.rb:
class Album < ActiveRecord::Base
attr_accessible :name
has_many :products
end
All'interno product.rb:
class Product < ActiveRecord::Base
attr_accessible :img, :name, :price, :quantity
belongs_to :album
end
2) Utilizzo della console "rails", come è possibile le associazioni (quindi posso usare "<% = Product.first.album.name%>")?
ad es.
a = Album.create(:name => "My Album")
p = Product.create(:name => "Shampoo X")
# what's next? how can i set the album and the product together?
Se si aggiunge il '_id' a accessibili, allora si può solo attaccare il valore id come si crea un'istanza di esso:' Product.create (nome: 'Shampoo', album_id: a.id) ' – bdares
@bdares Per aggiungere _id, devo solo usare' attr_accessible: img,: name,: price,: quantity,: _id', giusto? Tuttavia, mi dà questo errore, 'ActiveModel :: MassAssignmentSecurity :: Errore: Impossibile assegnare in massa attributi protetti: album_id' –
@MrYoshiji, per' p.album = a', funziona temporaneamente, ma se riapri il console, il p.album diventa "nil". Per 'p.album_id = a.id', dà questo errore,' NoMethodError: metodo indefinito 'album_id =' '. Per 'a.products << p', restituisce questo errore,' RuntimeError: impossibile modificare Hash congelato'. Devo rigenerare entrambi i modelli? Grazie a tutti! –