2

如果我手动创建图像并分配产品。它在控制台中运行良好:

p = Spree::Product.first
i = Spree::Image.create!(<create info>)

p.images << i

p.save!

当我尝试在程序中运行它时。它什么也没做。它运行就像p.images << i从未运行过一样。

我尝试搜索,但不知道如何很好地搜索 <<。

更新

如果我添加到程序中:

p = Spree::Product.first
i = Spree::Image.create!(<create info>)

i = Spree::Image.find(i.id) #this line

p.images << i

p.save!

这很好用,但我不明白这里发生了什么。

先谢谢了!贾斯汀

4

1 回答 1

0

所以这在 ORM 中很常见。

collection<< 方法通过将一个或多个对象的外键设置为调用模型的主键来将一个或多个对象添加到集合中。

根据 Rails 教程: http: //guides.rubyonrails.org/association_basics.html

如果您转到该页面,您可以按 ctrl+f 并搜索:<<

这将为您提供大量有关此的信息。

另外我会推荐一个更多的来源。我更喜欢这个 ORM 的文档:http: //datamapper.org/docs/associations.html

它不是活动记录,但非常相似。对我来说,使用 datamapper 帮助我更好地掌握了活动记录。

希望有帮助。

于 2013-11-13T01:33:19.490 回答