Ruby on rails rails中单数和复数活动记录查询的区别是什么?
我在看一本书。对于我所面临的这种困惑,我找不到合适的解释。我有一个名为LineItem的模型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?相同。有人能解释一下吗 非常简单,模型名是单数,表名是复数,但关联可以是单数,也可以是复数,这取决于关联的记录数。
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