Ruby on rails 新手:访问模型对象的属性
我有两类车型:汽车和客户 车型汽车:Ruby on rails 新手:访问模型对象的属性,ruby-on-rails,ruby-on-rails-3,activerecord,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Activerecord,Ruby On Rails 3.1,我有两类车型:汽车和客户 车型汽车: 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 但是我没有得到属性“car\u id”错误
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
但是我没有得到属性“car\u id”错误,我也没有得到属性“last\u name”错误
--问题1:--
我检查了我的数据库,在我的客户表中有'car\u id'和'last\u name'列。为什么我不能以控制器代码的方式访问它们
--问题2:--
但是代码:
my\u customer.map(&:car\u id)
正在用于访问car\u id,但是,我不太理解代码。map(&:car\u id)
,它做什么?有人能给我解释一下吗?你不能做我的客户的原因。姓是我的客户在这里不是一个客户,而是一系列客户,因为你找到了所有的客户。这也是mycustomer.map(&:car\u id)
起作用的原因。这段代码的意思是:对于数组my_customer中的每个对象,调用方法car_id
,并将结果插入一个新数组——然后返回该新数组
如果客户属于car,则需要客户表中的car_id(对应于car表中的id列)。此外,您不应该在car表中输入姓氏,而应该在customer表中输入姓氏
听起来你可能需要退后一步,更好地理解。我不清楚为什么客户会属于某辆车。嗨,这是我的错别字,我说我在“车”表中有车id和姓氏,实际上他们在“客户”表中。这只是我的打字错误。我最关心的是代码“.map(&:car\u id)”,它是做什么的?在.map(&:car\u id)中“&”是什么意思?仅意味着调用该方法?map
需要一个块,该块针对集合中的每个项运行,因此您通常会执行类似于my_array.map{item}item.car_id}
的操作。&
将方法转换为块;实际上,您现在正在传入一个由“调用方法”组成的块。这基本上是一条捷径。
my_customer = Customer.find_all_by_first_name('John')
p my_customer.last_name
p my_customer.car_id