2017-05-07 64 views
-1

我有我的Ruby on Rails應用程序啓動並使用3個腳手架模型運行。到現在爲止還挺好。現在我正在編寫業務邏輯並獲得語法錯誤,並且不太明白如何編寫變量。Rails:瞭解查詢模型語法

詳情:
3個模型:Document,Employee和EmpDocument。
業務規則:每當一個新的文檔被添加爲每個員工
1)循環遍歷員工
2)創建EmployeeDocument切的EmpDocument.rcd

我上.Create線錯誤,因爲我沒有正確編碼我的變量。 我查看了文檔,沒有找到任何規則/示例。

Document.Model 
def create 
    @document = Document.new(document_params) 
respond_to do |format| 
    if @document.save 
    format.html { redirect_to @document, notice: 'Document was successfully created.' } 
    format.json { render :show, status: :created, location: @document } 

    # create an EmpDocument record for each employee for this new document 
    #@employees = Employee.find(:all) 
    Employee.all.each do |employee| 
     Empdocument.Create(:document_id => @document.document_id, :employee_id => employee.employee_id, :viewed => '0001-01-01') 
    end 

    else 
    format.html { render :new } 
    format.json { render json: @document.errors, status: :unprocessable_entity } 
    end 
end 
end 

這裏的錯誤:

「未定義的方法`DOCUMENT_ID」爲#」

#@employees = Employee.find(:all) 
     Employee.all.each do |employee| 
      Empdocument.Create(:document_id => @document.document_id, :employee_id => employee.employee_id, :viewed => '0001-01-01') 
     end 
+0

「我得到一個語法錯誤」 - 你從哪裏得到的是語法錯誤?它說什麼?我無法重現那個語法錯誤,語法是正確的。 「我在.Create行遇到錯誤」 - 什麼錯誤?它說什麼?如果您甚至不告訴我們問題是什麼,那麼我們無法幫助您。 「我沒有正確編碼我的變量。」 - 那有什麼意思?請定義「正確」。請閱讀如何構建[mcve],[問],參加[參觀],並閱讀[幫助]。 –

+0

對不起 - 我發佈時無法訪問應用程序 - 這裏是錯誤:#@ employees = Employee.find(:all) Employee.all.each do | employee | Empdocument.Create(:document_id => @ document.document_id,:employee_id => employee.employee_id,:viewed =>'0001-01-01') end(更新原始文章) – WebdevAlan

+0

錯誤看起來表明@文件沒有方法document_id。你確定它不是@ document.id? – mr12086

回答

4

對於當前的要求,我會鼓勵你看看在加載ActiveModel的after_create回調。

你可以做什麼,然後在你的Document Model

after_create :create_emp_documents 

def create_emp_documents 
Employeee.all.each do |employee| 
    self.empdocuments.create(employee_id: employee.id) 
end 
end 
+0

謝謝!我記得我手冊中的回調 - 我將把代碼移到那裏。 – WebdevAlan

+0

我需要傳入document_id,因爲每個新的EmpDocument記錄都有Document-Id。我使用這個文件來存儲他們查看它的時間 - create_table「empdocuments」,force::cascade do | t | t.datetime 「觀察」 t.integer 「DOCUMENT_ID」 t.integer 「EMPLOYEE_ID」 t.datetime 「created_at」,NULL:假 t.datetime 「的updated_at」,NULL:假 t.index [「DOCUMENT_ID 「],名稱:」index_empdocuments_on_document_id「 t.index [」employee_id「],名稱:」index_empdocuments_on_employee_id「 結束 – WebdevAlan

+0

在模型中,您可以將它的id作爲self.id ,.所以document_id => self.id – mr12086