Ciao a tutti,
sto utilizzando 3 tabelle con relazione has_and_belongs_to_many.
Quindi, ho una cosa del genere:
(users)
id | nome | nick…
(groups)
id | nome | descrizione…
(users_groups)
user_id | group_id | ruolo
Nella mia action ho scritto:
@group = Group.find(params[:id])
to_assign = params[:users]
if to_assign
to_assign.each do |user_id,role|
unless role.blank?
ub = @group.users.find(:first,:conditions => ["id = ? and
group_id = ?",user_id, @group.id])
ub.ruolo = role
ub.save
end
end
end
I dati del form arrivano tutti correttamente, ma users_groups.ruolo non
me lo aggiorna perchè va in errore:
ActiveRecord::ReadOnlyRecord in AccountController#putroles
ActiveRecord::ReadOnlyRecord
In questo modo mi va in errore, dicendomi:
undefined method `users_groups’ for class…
Da quel che ho capito ‘users_groups’ lo trova come figlio di USER e non
di USERS, così ho cambiato il codice dell’update così: @group.users_bands.find(:first, :conditions => [“user_id =
?”,user_id]).update_attribute(:ruolo,role)
però mi dà quest’errore:
Mysql::Error: Unknown column ‘id’ in ‘where clause’: UPDATE users_bands SET user_id = 33, group_id = 2, ruolo = ‘dd’ WHERE id = NULL
Inserisco la colonna ID? Ma poi come faccio con le altre 2 colonne
user_id group_id ??
però mi dà quest’errore:
Mysql::Error: Unknown column ‘id’ in ‘where clause’: UPDATE users_bands SET user_id = 33, group_id = 2, ruolo = ‘dd’ WHERE id = NULL
Inserisco la colonna ID? Ma poi come faccio con le altre 2 colonne
user_id group_id ??
se hai optato per has_many :through, sì, ci vuole il campo id.
per� mi d� quest’errore:
Mysql::Error: Unknown column ‘id’ in ‘where clause’: UPDATE users_bands SET user_id = 33, group_id = 2, ruolo = ‘dd’ WHERE id = NULL
Inserisco la colonna ID? Ma poi come faccio con le altre 2 colonne
user_id group_id ??
se hai optato per has_many :through, s�, ci vuole il campo id.
in che senso, come fai con le altre due colonne?
Ok, allora lo aggiungo e tolgo la primary a group_id.
Riguarda il parametro [user_ids] ?
Questo mi serve per aggiungere degli utenti al gruppo con una
multipla che mi restituisce un array di user ID.
Il bello di questo parametro è che Rails capisce di cosa si tratta e
aggiunge tutto(compresi gli ID nella tabella users_bands) con un save,
senza fare modifiche nell’azione.
Ma non lo riconosce con la nuova relazione tra tabelle.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.