0

我想找到数组,但是我可以这样做吗?

@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
4

2 回答 2

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每个模型的属性抓取到一个数组中,并在 SQLIN子句中使用这些值。CountryDesignation它返回匹配的对象数组。

于 2012-04-22T16:37:23.527 回答
0

您正在寻找的是 ActiveRecord 以与 SQL 中的 IN 子句相同的方式处理数组的方法。幸运的是,AR 在传递数组时默认执行此操作。换句话说,您应该能够编写:

@model = Model.find(:first, :conditions => { :MOD_MFA_ID => })

于 2012-04-22T16:34:48.817 回答