我來自使用Python,對於Ruby on Rails的「魔力」如何工作我感到非常困惑。RoR的「魔術」名稱空間解析如何工作?
1.有沒有需要從任何地方訪問函數語句的任何地方
在Python,爲了,你必須導入。我認爲基礎紅寶石是一樣的。但是當使用rails時,我可以調用其他模塊中定義的隱藏變量和函數,而不需要頁面頂部的任何require語句。
E.g.我可以有一個文件,例如:
class CartsController < ApplicationController
....
def show
begin
@cart = Cart.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error "Attempt to access invalid cart #{params[:id]}"
redirect_to store_url, notice: 'Invalid cart'
end
end
凡記錄,重定向,和這樣的都沒有定義。它是從ApplicationController繼承了一些令人費解的樹嗎,還是通過其他機制以某種方式訪問這些命名空間?
2.使用不存在
這是有效的Rails代碼
current_item = line_items.find_by_product_id(product_id)
其中find_by_products_id尚未在任何地方,但定義,Rails的某種方式動態地 「創造」 的方法方法。有關如何完成的任何技術洞察?
感謝您的幫助!