我有簡單的應用程序與數據庫中的3個表和'多對多'的關係。HABTM上的Rails嵌套窗體:如何防止重複輸入?
# Model Employee
class Employee < ActiveRecord::Base
has_and_belongs_to_many :phonenumbers
accepts_nested_attributes_for :phonenumbers, :allow_destroy => true
attr_accessible :last_name, :first_name, :middle_name, :phonenumbers_attributes
end
# Model Phonenumber
class Phonenumber < ActiveRecord::Base
has_and_belongs_to_many :employees
attr_accessible :number
accepts_nested_attributes_for :employees
end
我有'employee_phonenumbers'連接表與'employee_id'和'phonenumber_id'列。
# View
<%= form_for @employee, :url => { :action => :create } do |f| %>
<%= f.label "Last name" %>
<%= f.text_field :last_name %>
<%= f.label "First name" %>
<%= f.text_field :first_name %>
<%= f.label "Middle name" %>
<%= f.text_field :middle_name %>
<%= f.fields_for :phonenumbers do |phonenumber| %>
<%= phonenumber.label "Phone number" %>
<%= phonenumber.telephone_field :number %>
<% end %>
<%= f.submit "Create" %>
<% end %>
# Controller
def create
@employee = Employee.new(params[:employee])
@employee.save ? (redirect_to :action => :index) : (render "new")
end
現在,如果我創建了一個用戶:'約翰'與電話號碼'555',那沒關係。
但是,如果我想創建一個具有相同電話號碼「555」的用戶'拉里',那麼在數據庫中有一個'555'條目的共享條目。
我該如何預防?
更新:我的邏輯是:如果有數字'555',那麼不要創建一個新的,使用現有的。如果沒有這樣的號碼,則創建一個新號碼並使用它。
非常感謝。 – blackst0ne