什么是self.new??

什么是self.new??

应用php?name=rails" onclick="tagshow(event)" class="t_tag">rails进行敏捷web开发第一版中文版,85页
class LineItem < ActiveRecord::Base
belongs_to :product

def self.for_product(product)
item =self.new
 item.quantity = 1
 item.product = product
 item.unit_price = product.price item
end
end

这里是啥意思啊? 

我返到493页查self.new
居然还写着 obj = self.new (这个惯用法相对高级,可以放心跳过它.)
狂晕
self.for_product(product)是类方法
item = self.new中,self代表的是LineItem这个类,也就是说这句话是产生LineItem的实例item
在这里,self = LineItem
create table line_items (
id int not null auto_increment,
product_id int not null,
quantity int not null default 0,
unit_price decimal(10,2) not null,
constraint fk_items_product foreign key (product_id) references products(id),
primary key(id)
);

这个表里没有product这个属性呢?只有product_id呢
为什么可以

item.product = product

的呢??
因为:belongs_to :product
能详细点么?
这个与rails里的“约定优于配置”有很大的关系。

belongs_to :product

说明lineItem属于product这个表。
而在rails里,这个外键约束默认为表名_主键名,所以就有了product_id这列,而product这列就成了product这个accessor.
为什么不
item.product_id = product
呢?
item.product_id = product.id

也是行的。