我有一个模型“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 = []
结束
答案 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
区块?