after_create销毁一条记录

时间:2012-12-10 00:41:03

标签: ruby-on-rails ruby-on-rails-3 activerecord callback after-create

我有两张桌子预订和租赁。用户预订汽车租赁,管理员批准租赁。

由管理员批准租赁。不再需要预订。如何在创建租赁记录的同时删除预订记录。

这是我的尝试(如果我是愚蠢的话,我是红宝石的新手,所以这是一种愚蠢的行为)

#rental_controller.rb
after_create :delete_booking

def delete_booking
  @booking = Booking.find(params[:id])
  @booking.destroy

respond_to do |format|
  format.html { redirect_to rental_url }
  format.json { head :no_content }
end
end

2 个答案:

答案 0 :(得分:1)

创建属于模型后,而不是控制器。我假设您有一个租赁模型,因为该片段来自租赁控制器。

在租赁模式中:

after_create :delete_booking


def delete_booking
  @booking = Booking.where(:booking_no => self.booking_no).first
  @booking.destroy
end

答案 1 :(得分:0)

理想情况下......

# Booking.rb Model

has_one :booking

# Rental.rb Model

belongs_to :booking, :class_name => "Booking", :foreign_key => "booking_no"

after_create :delete_booking

private
  def delete_booking
    self.booking.destroy
  end