Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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,我有一本日记 Ticketline.joins(:ticket, :product => :location) 票号线属于产品,产品属于位置 Ticketlines表有一个列PRODUCT,products表有一个列位置 产品可以在位置列nil中具有值 如果我在视图中的表中列出所有ticketline,则不显示包含位置为nil的产品的ticketline。整排 虽然我希望展示这一行,也许如果我打电话: ticketline.product.location.try(:NAME) 只需

我有一本日记

 Ticketline.joins(:ticket, :product => :location)
票号线属于产品,产品属于位置

Ticketlines表有一个列PRODUCT,products表有一个列位置

产品可以在位置列nil中具有值

如果我在视图中的表中列出所有ticketline,则不显示包含位置为nil的产品的ticketline。整排

虽然我希望展示这一行,也许如果我打电话:

ticketline.product.location.try(:NAME)
只需在该列中显示空值

如果我从控制器中删除:product=>:location,它将显示所有行

数据库中的值为:

TICKET, LINE, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS, PRICE, TAXID, ATTRIBUTES, PRODUCT_COST, PRICESELL, TAXES, SERVICES, SERVICES_RATE, HISTORY_ID
    'd0d82dbb-f6eb-41b3-a03e-37846e0e011a', 0, '130', '', 1, 850000, '001', '', 350000, 850000, 85000, 0, 0, 0
    'ec586062-af32-423e-82f7-0de1da9cffdd', 0, '121', '', 1, 1600000, '001', '', 650000, 1600000, 160000, 0, 0, 0
在本例中,有两行,其中一行包含位置为零的产品。该行未显示

我如何在显示所有记录的同时保留join:product=>:location(因为我需要从location表中获取每个产品的数据),以及那些在location列上具有nil值的产品的记录?

joins()
函数默认情况下作为
内部join
工作,这就是为什么它会给出
nil
值,您需要执行
左连接

 Ticketline.joins("LEFT JOIN tickets ON ticketlines.ticket_id = tickets.id LEFT JOIN products ON tickelines.product_id = products.id LEFT JOIN locations ON products.location_id = locations.id")
希望有帮助

joins()
函数在默认情况下作为
内部联接
工作,这就是为什么它会给出
nil
值,您需要改为执行
左联接

 Ticketline.joins("LEFT JOIN tickets ON ticketlines.ticket_id = tickets.id LEFT JOIN products ON tickelines.product_id = products.id LEFT JOIN locations ON products.location_id = locations.id")
Ticketline.joins(:ticket).joins("LEFT JOIN products ON tickelines.product_id = products.id").joins("LEFT JOIN locations ON products.location_id = locations.id")
希望有帮助

Ticketline.joins(:ticket).joins("LEFT JOIN products ON tickelines.product_id = products.id").joins("LEFT JOIN locations ON products.location_id = locations.id")
上面的查询将内部连接票据,并左键连接产品和位置。这将产生所需的结果


上面的查询将内部连接票据,并左键连接产品和位置。这将产生所需的结果。

通常它包括我朋友的所有价值观。你能给我一份你的数据样本吗。实际输出是什么?预期输出是什么?嗨,我用数据库中的值更新了答案。现在它只显示一行,而应该显示2。通常它包括我朋友的所有值。你能给我一份你的数据样本吗。实际输出是什么?预期输出是什么?嗨,我用数据库中的值更新了答案。现在它只显示一行,而应该显示2。谢谢你的回答,我不知道默认的内部联接,这对将来很有用。。谢谢!谢谢你的回答,我不知道默认的内部连接,这对将来很有用。。谢谢!