Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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 rails中单数和复数活动记录查询的区别是什么?_Ruby On Rails - Fatal编程技术网

Ruby on rails rails中单数和复数活动记录查询的区别是什么?

Ruby on rails rails中单数和复数活动记录查询的区别是什么?,ruby-on-rails,Ruby On Rails,我在看一本书。对于我所面临的这种困惑,我找不到合适的解释。我有一个名为LineItem的模型 class LineItem < ApplicationRecord belongs_to :product end 这里的行项目是怎么回事?我知道单数模型名被生成为复数表名。这就像直接查询表而不是模型一样 line\u items.empty?与line item.empty?相同。有人能解释一下吗 非常简单,模型名是单数,表名是复数,但关联可以是单数,也可以是复数,这取决于关联的记录数。

我在看一本书。对于我所面临的这种困惑,我找不到合适的解释。我有一个名为LineItem的模型

class LineItem < ApplicationRecord
  belongs_to :product
end
这里的
行项目是怎么回事?我知道单数模型名被生成为复数表名。这就像直接查询表而不是模型一样


line\u items.empty?
line item.empty?
相同。有人能解释一下吗

非常简单,模型名是单数,表名是复数,但关联可以是单数,也可以是复数,这取决于关联的记录数。 例如。 用户有很多书。我们可以找到许多像=>User.last.books这样的书,它将返回所有的书。 这本书属于用户。我们正在定义一个与book相关的用户。所以Book.last.user

另一方面,若您有一个对象与该对象关联。那就只有一个了。如。 用户有一个:帐户。所以我们打电话来获取相关账户。user.account不是user.accounts

在您的例子中,我们有
产品有很多:行项目
,因此当您在create方法
产品=产品中有实例时,find(params[:product\u id])
和trigger product.line项目它将返回多个(如果它们是)行项目

深入了解关联

第_行项目是否为空?与行项目相同。为空?。有人能解释一下吗?

答案是否定的。这两者之间的差异很大。
object.line\u items.empty?平均值是与对象关联的任何行项目。 LineItem.empty?LineItem上的类方法是否可以执行空中的任何操作?如果有定义。通常情况下,除非您明确定义它,否则它不会出现

class Product < ApplicationRecord
  has_many :line_items

    def method_name
        unless line_items.empty?
         do #this
        end
    end
end
def create
  product = Product.find(params[:product_id])
  @line_item = @cart.line_items.build(product: product)
  ###---
  ##
end