我想找到数组,但是我可以这样做吗?
@model = Model.find(:first, :conditions => { :MOD_MFA_ID => params[:man]})
@ct = CountryDesignation.find(:first, :conditions => { :CDS_ID => "110000002"})
但是:CDS_ID => “110000002”并不好。我需要通过@ model.Field选择它,例如:: CDS_ID => @ model.Field。但@model也不只是一个条目,它是一个数组。因此我需要为每个模型选择CountryDesignation。 但是我需要从CountryDesignation数组中选择DesText数组
@destext = DesText.find(:all,:conditions => {:TEX_ID => @ ct.Field})
如何做这项工作? 以及如何正确看待这个?
%table %tr %th Mfa id %th Год начала выпуска %th Год завершения выпуска - @model.each do |model| %tr %td= link_to model.MOD_ID, model %td= link_to model.MOD_PCON_START, model -if model.MOD_PCON_END.blank? %td= link_to "По настоящее время", model -else %td= link_to model.MOD_PCON_END, model -#%td= model.country_designations.des_texts.TEX_TEXT -#= link_to 'Show model', model %br - @destext.each do |t| name %td= t.TEX_ID %td= t.TEX_TEXT - @ct.each do |ct| ct %td= ct.CDS_ID %td= ct.CDS_TEX_ID
答案 0 :(得分:2)
您可以使用map
。如果您感兴趣的模型属性名为cds_id
:
@models = Model.all(:conditions => { :MOD_MFA_ID => params[:man] })
@ct = CountryDesignation.all(:conditions => { :CDS_ID => @models.map(&:cds_id) })
这实质上将每个模型的cds_id
属性捕获到一个数组中,并在SQL IN
子句中使用这些值。它返回一个匹配的CountryDesignation
个对象数组。
答案 1 :(得分:0)
您正在寻找的是ActiveRecord以与SQL中的IN子句相同的方式处理数组的方法。幸运的是,AR在传递数组时默认执行此操作。换句话说,您应该能够写下:
@model = Model.find(:first,:conditions => {:MOD_MFA_ID =>})