我是Ruby on Rails的新手。我不明白模型中编写的方法是如何工作的。例如。
class Order < ActiveRecord::Base
has_many :line_items, dependant: :destroy
def add_line_items_from_cart(cart)
cart.line_items.each do |item|
line_items << item
end
end
end
我不明白这里是如何引用line_items的。 line_item不是Order表的列,那么line_items&lt;&lt;项目工作。
P.S。 - 这个例子来自RoR书。
答案 0 :(得分:0)
line_items
工作,因为您在LineItem表中有一个order_id
列。 Rails使用相应的order_id
查询该表的任何行项目,并将它们作为集合返回(实际上是ActiveRecord::Associations::CollectionProxy
)。你可以在这里阅读更多相关信息http://edgeapi.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html