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 は単なる 1 つのエントリではなく、配列です。したがって、すべてのモデルで CountryDesignation を選択する必要があります。しかし、次に CountryDesignation 配列 DeText 配列から選択する必要があります

@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 に答える