在导轨中删除和重新创建相同的关联

问题描述:

我有一个通过设计创建的用户模型,一个股票模型(通过脚手架生成),因此我可以用我自己的定制价格创建股票数据库,以及一个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 
+0

你认为哪种视图以及该视图的代码是什么样的?我会说,这是不寻常的,你会有一个连接表的控制器。通常你会使用像Users控制器这样的东西,并用'@ user.user_stocks'找到UserStock,并且你可以附加你的删除。 –

+0

您需要向我们展示您的视图以及相关模型,以便我们为您提供帮助。 – the12

+0

@ruby_newbie我知道这很不寻常。这只是为了方便客户(因为这是一个股票交易游戏,他们更容易看到参与者通过此表追踪的股票)。但它应该仍然有效。我已经更新了我的代码。 – Solias

如果你正在尝试做的是通过用户所拥有的股票迭代你应该开始在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 %> 
+0

我在您的​​观看次数 – Solias

+0

您最多可以获得'未定义的本地方法或变量“us”'。我觉得我现在已经有了逻辑。我认为这是正确的路径,我通过user_stocks关联迭代do循环。但我得到一个控制台错误“未定义的方法或变量我们”。我该如何解决这个问题? – Solias

+0

这只是我的一个错字。编辑 – max