Rails 如何避免 adultclasses 輸入學生資料時輸錯或輸入不存在的學生 id

idarfan · 2013年10月28日 · 最后由 idarfan 回复于 2013年10月28日 · 1951 次阅读

撰寫這程式的思維是,adult 是學生資料表 adultclasses 是學生選課資料表,我想要達到的要求是 當資料建檔人員鍵入學生選課資料時,要避免輸入不存在於 adult 學生資料表的 student_id. 反覆測了幾次沒能成功

另外我的 rails 版本較為老舊尚未昇級 目前為 Rails 3.0.10

由於在建立程式時誤用了複數名稱,因此在 adultclasse.rb 裏做了如下的補救

# encoding: utf-8
class adultClasse < ActiveRecord::Base
set_table_name "adult_classes"
  belongs_to :adult  
  validates :student_id,  :presence =>  {:message => "請您必須填寫學生id"},   
    :length => {:message => "學生id最短4個數字,最長12個數字", :minimum => 4, :maximum => 12}        
end

在 adultclasses_controller.rb 的 cretae 裏做了如下的修改

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] = "查無該筆學生id記錄!"
      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

adult.rb 裏的內容

has_many :adult_classe, :dependent => :destroy

请注意排版!!!!

if @adult_class = @adult_class.find(:student_id) == Adult.find_by_student_id(:student_id)

What that means?

and What is the usage of @adults_session_descriptions = AdultsSessionDescription.all

這個寫法是錯誤的,主要想要達成的目的是在輸入學生選課資料前先檢查有無該筆學生記錄。如果有則儲存,如果沒有則噴出 "該筆學生 id 紀錄不存在。

至於 @adults_session_descriptions = AdultsSessionDescription.all 這個是學生選課記錄的課程說明而已。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号