2010-10-01 4 views
0

j'ai deux modèles ici: Package et Statusla difficulté à mettre à jour un attribut avec une association attachée à elle

Package belongs_to statut

Statut has_many paquets

Alors, mon modèle de paquet a une colonne status_id

Dans mon contrôleur de paquets, j'ai cette méthode (qui reçoit des données d'un appel POST ajax):

def edit_status 
    @status = Status.find_by_name(params[:status]) 
    Package.update(params[:id], :status_id => @status.id) 
end 

Mais c'est bizarre ... Je ne peux pas obtenir status_id pour mettre à jour pour sauver ma vie. Si je change la colonne status_id pour toute autre colonne dans l'enregistrement (tel que from_name) alors cela fonctionne très bien. Je me sens comme si je prenais des pilules folles ici, mais des idées pour lesquelles cela pourrait ne pas fonctionner?

+1

est-status_id protégé contre la cession de masse? L'objet d'état est-il résolu correctement avant le Package.update (consigner sa valeur dans la console)? – Coderama

+0

status_id n'est pas protégé (il n'y a actuellement pas de validations/protections en place dans les modèles Package ou Status). Et l'objet d'état est en effet résolu correctement (je l'ai enregistré pour vérifier). – Shpigford

Répondre

0

Il peut y avoir un problème de validation. Je ferais un "find" puis "update_attributes", qui retournera "false", vous permettant de savoir si l'enregistrement est invalide.

+0

J'ai effectivement essayé de faire exactement cela et j'obtiens exactement le même résultat. – Shpigford

Questions connexes