我有兩個模型類:汽車和客戶,新手:模型對象的訪問屬性
型號汽車:
class car < ActiveRecord::Base
#car has attribute :town_code
has_many :customers
end
型號客戶:
class customer < ActiveRecord::Base
# customer has attribute :first_name, :last_name
belongs_to :car
end
在我的控制器,我有以下代碼:
my_customer = Customer.find_all_by_first_name('John')
p my_customer.last_name
p my_customer.car_id
但我得到no attribute 'car_id'
錯誤,我也得到了no attribute 'last_name'
錯誤。
---問題1:---
我檢查我的數據庫,我有'car_id'和'姓氏' 我客戶表列。爲什麼我不能以我的控制器代碼的方式訪問它們?
---問題2:---
但代碼:my_customer.map(&:car_id)
正在訪問car_id,不過,我不太明白的代碼.map(&:car_id)
,它有什麼作用?任何人都可以向我解釋?
嗨,那是我的錯字,當我說我在'car'表中有car_id和last_name時,實際上他們在'customer'表中。這只是我的錯字。我主要關心代碼「.map(&:car_id)」,它有什麼作用? – Mellon
「&」在.map(&:car_id)中的含義是什麼?只意味着調用該方法? – Mellon
'map'需要一個塊,它會爲集合中的每個項目運行,所以您通常會執行像'my_array.map {| item | item.car_id}'這樣的操作。 '&'將一個方法變成一個塊;基本上你現在傳入一個由「調用方法」組成的塊。這基本上是一條捷徑。 –