gpt4 book ai didi

mysql - Ruby on Rails :Access data from other table's column

转载 作者:行者123 更新时间:2023-11-30 00:08:45 24 4
gpt4 key购买 nike

下面的第一个代码有效

foos_set = Foo.where(foo_number: number)
foo = foos_set.first
if foo.project.status == "Ongoing"
#do sth
end

其中foo是一个表,每个foo都有一个名为project的列,它链接到一个项目表。status是表project的一列。

现在我想做类似的事情,尝试检查 foo-> 其相关项目-> 项目状态

@foos = Foo.all
@hash = Gmaps4rails.build_markers(@foos) do |foo, marker|
if foo.project.status == "Ongoing"
#do sth
else
#do sth
end

它说 foo.project 返回 nil,因此我无法检查 foo.project.status 。我的问题是什么?我是否错过了模型或 Controller 中的某些设置?我已将工作代码放入第二个 Controller 中,它也会产生错误。所以这是一些配置错误。

最佳答案

正如 @jefflunt 在他的评论中所说,你可能有一些 foo不与 project 关联的,您可能想要参加。查找任何foo对于未附加到项目的项目,您可以在 Rails 控制台中使用以下命令:

Foo.where(project: nil)

如果有一些foo s 不与 project 关联是您可以接受或期望的事情,那么您可以采取一些措施来避免 nil project关联到foo .

if foo.project.present? && foo.project.status == "Ongoing"

此行检查是否 foo有一个project附加到它,如果是这样,请确保 project的状态为“正在进行”。更好的是:

if foo.project.try(:status) == "Ongoing"

try方法返回 nil ,而不是抛出错误,如果特定 foo没有 project .

关于mysql - Ruby on Rails :Access data from other table's column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24275901/

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