J'ai un modèle utilisateur créé par legs, un modèle de stock (généré par un échafaudage) afin que je puisse créer une base de données de stocks avec mes propres prix personnalisés et un modèle UserStock pour établir une association entre les deux. Tout semble fonctionner correctement dans mon interface et ma console.Supprimer et recréer la même association dans les rails
Voici la capture. J'ai une méthode de suppression liée à un bouton qui est configuré dans mon _list.html.erb qui affiche tous les stocks dans le portefeuille de l'utilisateur. Lorsque je le supprime la première fois, (retirer du stock de mon portefeuille) ça fonctionne bien. Quand je rajoute le stock à mon portefeuille, ça marche bien, bien sûr. Mais la suppression la deuxième fois ne fonctionne pas. Dites, par exemple, mon ID utilisateur est 1. Mon association UserStock crée une association entre user_id 1 et stock_id 1 (disons stock avec l'ID 1 est Google). Ceci est stocké dans UserStock id 1. Lorsque je supprime cette association et la recréer, elle est stockée dans UserStock id 2 (une toute nouvelle association). Mais quand j'essaye de le supprimer à nouveau, je suis incapable de le faire. La console My rails indique cette erreur dans mon contrôleur UserStock.
C'est l'erreur qui apparaît: Enregistrement introuvable dans UserStocksController # détruire
def set_user_stock
@user_stock= UserStock.find(params[:id])
end
EDIT: Bien sûr, voici mon avis et les modèles nécessaires:
<% if @user.id = current_user.id %>
<td>
<%=link_to "Delete", user_stock_path(user_stock), :method
=> :delete, :data => { :confirm => "Are you sure?" },
:class => "btn btn-xs btn-danger" %>
</td>
<% end %>
user.rb
has_many :user_stocks
has_many :stocks, through: :user_stocks
def can_add_stock?(ticker_symbol)
!stock_already_added?(ticker_symbol)
end
def stock_already_added?(ticker_symbol)
stock = Stock.find_by_ticker(ticker_symbol)
return false unless stock
user_stocks.where(stock_id: stock.id).exists?
end
stock.rb
has_many :user_stocks
has_many :users, through: :user_stocks
def self.find_by_ticker(ticker_symbol)
where(ticker: ticker_symbol).first
end
user_stock.rb
belongs_to :user
belongs_to :stock
Sur quelle vue êtes-vous et à quoi ressemble le code pour cette vue? Je dirai qu'il est inhabituel que vous ayez un contrôleur pour une table de jointure. Habituellement, vous utiliserez quelque chose comme le contrôleur des utilisateurs pour cela et trouver le UserStock avec '@ user.user_stocks' et vous pouvez joindre votre suppression à cela. –
Vous devez nous montrer votre point de vue, ainsi que les modèles pertinents pour nous de vous aider. – the12
@ruby_newbie Je sais que c'est inhabituel. C'est juste pour la commodité du client (puisqu'il s'agit d'un jeu de trading boursier, il est plus facile pour eux de voir quels stocks les participants suivent à travers ce tableau). Mais cela devrait fonctionner néanmoins. J'ai mis à jour mon code ci-dessus. – Solias