このプログラミング内容について、私は次のように考えています。「adult」は生徒データ表を表し、「adultclasses」はコース選択データ表を表します。
データキーが生徒データを直接入力する場合、成人向けコンテンツに存在しない Student_id の入力を避ける必要があります。しかし、私は何度か試みましたが、それでも失敗します。
def create
@adult_class = AdultClasse.new(params[:adult_classe])
@adults_session_descriptions = AdultsSessionDescription.all
if
@adult_class = @adult_class.find(:student_id) == Adult.find_by_student_id(:student_id)
flash[:notice] = "no this student id record!"
redirect_to:action => :index
else
respond_to do |format|
if @adult_class.save
format.html { redirect_to(@adult_class, :notice => 'adult classe was successfully created.') }
format.xml { render :xml => @adult_class, :status => :created, :location => @adult_class }
else
format.html { render :action => "new" }
format.xml { render :xml => @adult_class.errors, :status => :unprocessable_entity }
end
end
end
プログラムをビルドする際に複数の名前を使用するのを間違えたので、以下のように adultclasse.rb を作成しました。
# encoding: utf-8
class AdultClasse < ActiveRecord::Base
set_table_name "adult_classes"
belongs_to :adult
#has_many :adults_classe_ship
#has_many :adult, :through => :adults_classe_ship
validates :student_id, :presence => {:message => "please input student id"},
:length => {:message => "too short or too long", :minimum => 4, :maximum => 12}
end
これはモデルAdult.rbです
# encoding: utf-8
class Aadult < ActiveRecord::Base
before_save :fix_cname
def age
now = Time.now.utc.to_date
dob = self.birthday
now.year - dob.year - ((now.month > dob.month || (now.month == dob.month && now.day >= dob.day)) ? 0 : 1)
end
private
def fix_cname
self.cname = self.cname.gsub(/[\w\s\b\$[:punct:]]/ , '')
end
#has_many :adults_classe_ship, :dependent => :destroy
#has_many :adult_classe, :through => :adults_classe_ship