在导轨中删除和重新创建相同的关联
问题描述:
我有一个通过设计创建的用户模型,一个股票模型(通过脚手架生成),因此我可以用我自己的定制价格创建股票数据库,以及一个UserStock模型来建立关联两者之间。在我的用户界面和我的控制台中,似乎一切正常。在导轨中删除和重新创建相同的关联
这里是捕获。 我有一个删除方法绑定到在我的_list.html.erb中配置的按钮,该按钮显示用户投资组合中的所有股票。当我第一次删除它(从我的投资组合中删除股票),它工作正常。当我再次将股票添加到我的投资组合时,当然工作良好。但第二次删除不起作用。 例如说,我的用户ID是1.我的UserStock关联在user_id 1和stock_id 1之间创建关联(比如说,ID为1的股票是Google)。这存储在UserStock ID 1中。当我删除此关联并重新创建时,它将存储在UserStock ID 2(一个全新的关联)中。但是当我尝试再次删除它时,我无法这样做。我的导轨控制台在我的UserStock控制器中指出了这个错误。
这是弹出的错误:记录在UserStocksController未找到#破坏
def set_user_stock
@user_stock= UserStock.find(params[:id])
end
编辑:好的,这是我的观点和需要的车型:
<% 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
答
如果你正在尝试做的是通过用户所拥有的股票迭代你应该开始在user_stocks
结束,而不是stocks
协会:
<% @user.user_stocks.each do |user_stock| %>
<td><%= user_stock.stock.ticker %></td>
<td><%= user_stock.stock.name %></td>
<% 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 %>
<% end %>
你认为哪种视图以及该视图的代码是什么样的?我会说,这是不寻常的,你会有一个连接表的控制器。通常你会使用像Users控制器这样的东西,并用'@ user.user_stocks'找到UserStock,并且你可以附加你的删除。 –
您需要向我们展示您的视图以及相关模型,以便我们为您提供帮助。 – the12
@ruby_newbie我知道这很不寻常。这只是为了方便客户(因为这是一个股票交易游戏,他们更容易看到参与者通过此表追踪的股票)。但它应该仍然有效。我已经更新了我的代码。 – Solias