2012-08-13 47 views
0

我有點不確定如何存儲來自collection_tag的數據。如何存儲選擇信息

在這裏,我對

Customer   GenderManager  Genders 
Id    Id     Id 
First   Customer_id  Description 
Last    Gender_id 
Email   Created_at 
Password 

這裏的關係

Customer::class 
    has_many :gender_managers 
    accepts_nested_attributes_for :gender_managers, allow_destroy: :true 
Gender::class 
    has_many :gender_managers 
GenderManagers:class 
    belongs_to :customer_id 
    belongs_to :gender_id 

的形式我有工作模式目前他已經跟隨

<%= form_for @customer do |f| %> 
    <div class="customer_edit_error_message"> 
      <%= render 'shared/error_messages' %> 
    </div> 
    <fieldset> 
    <div class="customer_edit_name"> 
      <%= f.label :first_name %> 
      <%= f.text_field :first_name %> 
    </div> 

    <div class="customer_edit_middle_name"> 
      <%= f.label :middle_name %> 
      <%= f.text_field :middle_name %> 
    </div> 

    <div class="customer_edit_last_name"> 
      <%= f.label :last_name %> 
      <%= f.text_field :last_name %> 
    </div> 

    <div class="customer_edit_gender"> 
    <%= f.collection_select(:customer, :id, Gender.all, :id, :description) %> 
    </div> 
    <div class="customer_edit_button"> 
      <%= f.submit "Save changes", class: "button_accept" %> 
    </div> 
    <% end %> 

在customerController不知道如果我必須做一點事。我知道它不對,它給我錯誤。它的形式,讓我擔心在選擇像

在此先感謝。

+0

您的查看代碼建議了一種不同的關係,即「客戶belongs_to:性別」。你的意思是你想存儲一個客戶是男性還是女性? – Mischa 2012-08-13 14:53:34

+0

是的,但也許跟蹤的變化:D – Jseb 2012-08-13 14:57:05

+0

你是什麼意思「跟蹤變化」?有人改變性別是非常罕見的,你爲什麼要跟蹤這一點。我不認爲你需要'GenderManager',說實話你也不需要'Gender'。只需在您的「客戶」模型中添加字段「性別」即可完成。總會有男性和女性,不需要將它們存儲在桌子上。 – Mischa 2012-08-13 15:01:43

回答

0

我建議您爲您的Customer模型添加屬性gender。如果你想保留的變化軌跡,你可以在Customer創建GenderHistory模型,做這樣的事情:

class Customer < ActiveRecord::Base 
    has_many :gender_histories 
    before_update :track_gender 

    def track_gender 
    self.gender_histories.create(:gender => self.gender) if self.gender_changed? 
    end 
end 

GendersGenderManager模型是沒有必要的。