Witam Wszystkich
Mam problem z zapisaniem ‘w jedym strzale’ obiektu do bazy.
MODEL
Mam:
model Entry
model Category
model Categorization - łączący Entry i Category
class Entry < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations
end
class Category < ActiveRecord::Base
has_many :categorizations
has_many :entries, :through => :categorizations
end
class Categorization < ActiveRecord::Base
belongs_to :category
belongs_to :entry
end
W tabeli entries:
name :string
email :string
description :text
W tabeli categories:
name :string
(w tabeli kategoria sa wpisane na stale nazwy kategorii np:
category_id = 1, name=“grafika wektorowa”
category_id = 2, name=“grafika rastrowa”
category_id = 3, name=“zdjecia”
itp.
W tabeli categorizations mam:
category_id :integer
entry_id :integer
VIEW
W formularzu rhtml podajemy:
nazwę, email, opis i jest mozliwosc wyboru od 1 do kilku kategorii
hosiawak podaje tak:
@user = User.find(1)
@tournament = Tournament.find(1)
@subscription = Subscription.new(:user => @user, :tournament => @tournament, :points => 10)
ale to jest w momencie jak juz jest ‘znany’ User i Tournament
a ja chce przypisac kategorię (category) juz przy tworzeniu nowego wpisu (entry)
[b]czy jest jakis inny sposob niz ten:
- tworze nowy wpis
- zapisuje do bazy
- pobieram z bazy ten wpis
- dodaje kategorie
- zapisuje do bazy
?
[/b]
oczywiscie nie musze korzystac z has_many :through, poniewaz nie przewiduje dodatkowych pol w tabeli categorizations - moge zastosowac has_and_belongs_to_many