Rails 3错误检查关联是否存在

时间:2011-03-25 14:53:28

标签: ruby-on-rails ruby activerecord

我有一个模型“modela”,它与模型“submodelb”有一个has_many_through关系。在控制器中,我想检查modela是否有与之关联的子模型。我试过下面的两个代码示例;但是,如果modela没有任何submodelbs,则抛出错误“undefined method`submodelbs'”。请帮我看看我做错了什么。

样本1:       if!@modela.submodelbs.nil?
          @submodelbs = @ modela.submodelbs
         其他            @submodelbs = []          结束

样本2:        if!@modela.submodelbs.empty?
          @submodelbs = @ modela.submodelbs
         其他            @submodelbs = []          结束

4 个答案:

答案 0 :(得分:1)

您可以使用与.present?

相反的blank?
@submodelbs = @modela.submodelbs.present? ? @modela.submodelbs : []

但我认为您的问题是@modela可能是nil,或者您可能没有在模型中正确定义关联。

答案 1 :(得分:1)

has_many_through生成的reader方法总是返回一个看起来像Array的东西,因此它永远不会返回nil。那么,你不能一直只返回@modela.submodelbs吗?

答案 2 :(得分:0)

我用空白?

unless @modela.submodelbs.blank?
   #modela has submodelbs
end

但是错误消息表明您可能在关联定义方面有问题......

您尝试实现的目标也可以通过单行

完成
@modela.submodelbs ||= []

如果submodelbs为空,则将分配空数组。

答案 3 :(得分:-4)

为什么不把支票放在begin...rescue...end区块?