0

我有两个模型:

Clients
 validates :first_name, presence: true
 validates :last_name, presence: true

 #scope :with_current_copay, joins(:insurance_providers).merge(InsuranceProvider.max.group(:client_id))

 has_many :appointments
 has_many :insurance_providers
 accepts_nested_attributes_for :insurance_providers
 belongs_to :users

end

InsuranceProviders(属于客户)。

class InsuranceProvider < ActiveRecord::Base
  #scope :max, -> maximum(:effective_on, :group => 'client_id') 
  belongs_to :client
end

我创建了一个表单,它与 InsuranceProvider 一起创建了一个客户。

InsuranceProvider 有一个名为 client_id 的列。

填写表格时,client_id 还不存在。如何将该 client_id 放入 InsuranceProvider 表中?

这是我目前的表格:

<%= simple_form_for(@client) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= hidden_field_tag :user_id, current_user.id  %>
    <%= f.input :first_name %>
    <%= f.input :last_name %>
    <%= f.fields_for :insurance_providers do |provider| %>
      <%= provider.input :name, label: 'Insurance provider' %>
      <%= provider.input :member_id, label: 'Member ID' %>
      <%= provider.input :copay, as: :integer %>
      <%= provider.input :effective_on, as: :date  %>
    <% end %>
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>    

数据库迁移:

class CreateInsuranceProviders < ActiveRecord::Migration
  def change
    create_table :insurance_providers do |t|
      t.integer :client_id
      t.string :name
      t.string :member_id
      t.integer :copay
      t.date :effective_on

      t.timestamps
    end
  end
end
4

2 回答 2

1

在您的控制器中,您需要以“新”方法建立关系。

看看这个例子:

  # GET /contacts/new
  # GET /contacts/new.json
  def new
    @contact = Contact.new
    @contact.addresses.build

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @contact }
    end
  end

它将为新地址创建一个新联系人和字段。这称为嵌套表单,因此如果您需要进一步挖掘。

于 2013-10-24T07:44:35.613 回答
0

问题是我最初在我的客户表中有'copay'字段(并且有一个在模型中验证它的参考),当我从客户和保险提供者中删除列时,我忘了去掉参考中的参考客户模型。这让我和rails都感到困惑。

于 2013-10-24T13:53:42.243 回答