Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 新手:访问模型对象的属性_Ruby On Rails_Ruby On Rails 3_Activerecord_Ruby On Rails 3.1 - Fatal编程技术网

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