0

私はこれに対する答えを見つけようとして研究してきましたが、それを解決するのに苦労しています。私はbooking_notext_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データベース テーブル自体に as auto-increment フィールドを設定することをお勧めします。

それ以外の場合は、モデルで管理するには、次のように進めることができます:

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 に答える