gpt4 book ai didi

ruby-on-rails - ruby on Rails 上的构建方法

转载 作者:行者123 更新时间:2023-12-02 13:34:43 26 4
gpt4 key购买 nike

rails 新手,我正在关注使用 Rails 3.1 进行敏捷 Web 开发中发现的 Depot 项目。一切都很好,直到当这本书使用“构建”方法时我迷路了。

@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.line_items.build(product: product)

我的谷歌搜索让我了解到 .build 方法只是在表中创建行(具有表之间的关联)的更简洁的方法。但在上面的代码中,我期望代码看起来像这样:

@line_item = @cart.line_items.build(product_id => params[:product_id])

我不明白为什么作者必须存储整行产品(product = Product.find(params[:product_id]))而不是仅仅获取product_id...

其中的内容是否超出了我的理解范围?

最佳答案

您误解了构建。它只是 new 的别名,没什么特别的。 https://github.com/rails/rails/blob/959fb8ea651fa6638aaa7caced20d921ca2ea5c1/activerecord/lib/active_record/relation.rb#L84

build 不会在数据库中“创建”记录,只是在内存中创建一个新对象,以便 View 可以获取该对象并显示一些内容,尤其是对于表单。

对于你的第二个问题,是的,你通过 id 编写的方式也可以。但更好的方法是不要信任参数。相反,首先通过在数据库中查找来验证它。

关于ruby-on-rails - ruby on Rails 上的构建方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com