0

我一直在研究试图找到答案,但我正在努力解决这个问题。我有一个 booking_no text_field,当用户通过 booking/new 进行新预订时,我想自动设置它。我希望它是一个自动编号,从 100 开始每次只加 1。

我知道在模型中这样做可能最容易,但我不确定如何。

我的booking.rb:(我还没有设置验证)

class Booking < ActiveRecord::Base
  attr_accessible :booking_no, :car_id, :date, :user_id

  belongs_to :car
  belongs_to :user
end

编辑评论:

#error ArgumentsError in booking_controller#create
wrong number of arguments (1 for 0)

我的booking_controller#create

def create
@booking = Booking.new(params[:booking])

respond_to do |format|
  if @booking.save
    format.html { redirect_to @booking, :notice => 'Booking was successfully created.' }
    format.json { render :json => @booking, :status => :created, :location => @booking }
  else
    format.html { render :action => "new" }
    format.json { render :json => @booking.errors, :status => :unprocessable_entity }
  end
end
end
4

1 回答 1

1

booking_no如果您在数据库表本身中设置为自动增量字段,这可能是最好的。

否则,要在您的模型中管理它,您可以执行以下操作:

before_create :increment_booking_no

def increment_booking_no
    self.booking_no = (self.class.last.nil?) ? "0" : ((self.class.last.booking_no.to_i) + 1).to_s
end
于 2012-12-09T18:05:54.763 回答