销毁从错误的表中删除的操作

时间:2012-05-23 03:50:47

标签: mysql ruby-on-rails ruby-on-rails-3 activerecord

我有一个用户模型可以通过一个丰富的连接表有很多假期..我的视图中的我的destroy语句是从假期表中删除而不是user_holidays表,因为它应该..见​​下文:

class HolidaysController < ApplicationController
  def destroy 
  @user = User.find(params[:user_id]) 
  @user_holiday = @user.holidays.find(params[:id]) 
  @user_holiday.destroy 
  redirect_to @user 
  end
end

继承人视图按钮:

<% @user.holidays.each do |hld| %>
                  <td><%= hld.name %></td>
                  <td><%= hld.date %></td>
                <td>
                    <%= button_to('Destroy', user_holiday_path(@user, hld), :method => 'delete', :class => 'btn btn-large btn-primary') %>

型号:

class User < ActiveRecord::Base 
has_many :user_holidays 
has_many :holidays, :through => :user_holidays

class UserHoliday < ActiveRecord::Base 
attr_accessible :holiday_id, :user_id 
belongs_to :user 
belongs_to :holiday 

class Holiday < ActiveRecord::Base 
attr_accessible :name, :date 
has_many :user_holidays 
has_many :users, :through => :user_holidays 

有什么想法吗?感谢!!!!

2 个答案:

答案 0 :(得分:1)

您应该使用@user.user_holidays代替@user.holidays

@user_holiday = @user.user_holidays.where(holiday_id: params[:id])

答案 1 :(得分:0)

(我的错误没有正确地解读你的问题)

 @user = User.find(params[:user_id]) 
 @user.holidays.delete(@user.holidays.find(params[:id]))