Ruby on Rails:访问其他表格列中的数据

时间:2014-06-18 01:49:34

标签: mysql ruby-on-rails

以下第一段代码

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

其中foo是一个表,每个foo都有一个名为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。我的问题是什么?我是否错过了模型或控制器中的某些设置? 我已将工作代码放入第二个控制器,它也会产生错误。所以这是一些配置错误。

1 个答案:

答案 0 :(得分:0)

正如@jefflunt在评论中所说,你可能有一些fooproject无关,你可能想要参与其中。要查找未附加到项目的任何foo,您可以在rails控制台中使用以下内容:

Foo.where(project: nil)

如果与foo没有关联的project与你可以使用或预期相关,那么你可以做一些事情来解决nil {1}} projectfoo相关联。

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

此行检查foo是否附加了project,如果是,请确保project的状态为"正在进行& #34 ;.更好的是:

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

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