1

私はモデルを持っています

class ServiceRequest < ActiveRecord::Base
  has_many :services
  accepts_nested_attributes_for :services

  ...
end  

と子供

class Service < ActiveRecord::Base
  belongs_to :service_category, :foreign_key => "wsi_web_serv_cats_uid_fk"
  belongs_to :service_type, :foreign_key => "wsi_web_serv_types_uid_fk"
  belongs_to :service_subtype, :foreign_key => "wsi_web_srv_subtypes_uid_fk"
  belongs_to :service_requests, :foreign_key => "wsi_web_inq_audits_uid_fk"
end

そして、次のようなフォームを介してそれを作成しています:

<% form_for(@request, :url => { :action => :create }) do |form| %>
    <table>   
        <tr>
          <td><font style="font-weight: bold" color="red">*</font><b>First Name</b></td>
            <td><b>Middle Initial</b></td>
            <td><font style="font-weight: bold" color="red">*</font><b>Last Name</b></td>
        </tr>
        <tr>
            <td><%= form.text_field :first_name %></td>
            <td><%= form.text_field :win_middle_init, :size => "2" %></td>
            <td><%= form.text_field :last_name %></td>
        </tr>
        <tr>
            <td colspan="2">
                <font style="font-weight: bold" color="red">*</font><b>Address 1</b><br/>
                <%= form.text_field :address_1 %><br/>
                <%= form.text_field :address_2 %>
            </td>
        </tr>
        <tr>
            <td><font style="font-weight: bold" color="red">*</font><b>City</b></td>
            <td><font style="font-weight: bold" color="red">*</font><b>State</b></td>
            <td><font style="font-weight: bold" color="red">*</font><b>Zip Code</b></td>
        </tr>
        <tr>
            <td><%= form.text_field :municipality %></td>
            <td><%= form.text_field :state, :size => "4" %></td>
            <td><%= form.text_field :zip, :size => "9" %></td>
        </tr>
        <tr>
            <td>
                <font style="font-weight: bold" color="red">*</font><b>Phone Number</b><br/>
                <%= form.text_field :day_phone %>
            </td>
        <tr/>
        <tr>
            <td>
                <font style="font-weight: bold" color="red">*</font><b>Email</b><br/>
                <%= form.text_field :email %>   
            </td>
        <tr/>
        <tr>            
            <td>
                <font style="font-weight: bold" color="red">*</font><b>Confirm Email</b><br/>
                <%= form.text_field :email_confirmation %>
            </td>
        </tr>
        <tr>
            <td>
              <font style="font-weight: bold" color="red">*</font><b>Preferred Contact</b><br/>
              <%= form.select "contact_method", options_for_select([["Phone", "PHN"], ["Email", "EML"], ["Phone or Email", "BTH"]]) %>
            </td>
        </tr>
    </table>

    <% form.fields_for :services do |fields| %>
        <%= fields.hidden_field :wsi_web_serv_cats_uid_fk %>
        <%= fields.hidden_field :wsi_web_serv_types_uid_fk %>
        <%= fields.hidden_field :wsi_web_srv_subtypes_uid_fk %>
    <% end %>           

    <p>
        <%= form.submit "Create" %>
    </p>            
<% end %>   

非表示のフィールドは、このフォームの送信元のページのフォームから入力されます。これはすべて正常に機能します。私のcreateメソッドは次のとおりです。

def create
    service_request = ServiceRequest.new(params[:service_request])

    if service_request.save!
        flash[:notice] = "Information submitted successfully. You will be contacted by a customer service representative regarding the services you selected."
        redirect_to :controller => "customer", :action => "index"
    else
        flash[:notice] = "Error submitting info. Please try again."
        redirect_to :back
    end         
end

すべてがデータベースに問題なく作成されます。ただし、2つのモデルは外部キーによってリンクされていません。つまり、子モデルに外部キーが設定されることはありません。どうすればこれを修正できますか?これは文書化されたバグだと言う人もいますが、これがどこにも当てはまるとは思えません。助けてくれてありがとう。

4

2 に答える 2

2

:foreign_key => "wsi_web_inq_audits_uid_fk"ServiceRequestクラスのhas_manyにもを指定する必要があります。使用可能なすべてのhas_manyパラメーターについては、 APIドキュメントを参照してください。

于 2009-11-20T22:17:06.943 に答える
1

なぜこれが複数形なのですか?

class Service < ActiveRecord::Base
  ...
  belongs_to :service_requests, :foreign_key => "wsi_web_inq_audits_uid_fk"
end
于 2009-11-20T22:31:17.010 に答える