我正在創建一個家庭相冊應用程序。用戶可以登錄並創建一個「家庭」對象。一旦創建了家庭對象,用戶就可以用「成員」填充家庭。該應用程序允許您將一個成員創建爲獨立對象。第一個成員創建後,所有後來的成員必須從現有成員的顯示頁面創建。當它們被創建時,被創建的成員需要確定它與當前成員(展示頁面)的關係。關係應該是'父母','孩子'或'兄弟姐妹'。Rails - 如何在同一個表中創建對象之間的關係
我有一些極端難以解決如何做到這一點。解決方案需要同時做這些事情:
- 當一個新的'成員'被創建,兩個對象將有一個新的關係的記錄。
- 需要指定關係的類型。它不能只是「成員」屬於「成員」。它需要是「成員」#1是「成員」#2的父母。
眼下,這對成員表的模式:
create_table "members", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "birthplace"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "family_id"
t.integer "parent_id"
t.integer "child_id"
t.integer "sibling_id"
end
我還沒有建立會員之間的關係的has_many還。當創建一個新的成員,我只是讓新成員的「PARENT_ID」或「child_id」或「sibling_id」等於當前成員的ID被顯示(再次,形式爲會員展示頁)
<%= form_for [@family, @new] do |m| %>
<div class="form-group">
<%= m.text_field :first_name, placeholder: "First Name", class: 'form-control' %>
</div>
<div class="form-group">
<%= m.text_field :last_name, placeholder: "Last Name", class: 'form-control' %>
</div>
<div class="form-group">
<%= m.text_field :birthplace, placeholder: "Birthplace", class: 'form-control' %>
</div>
<div class="form-group">
<label>Parent</label>
<%= m.select :child_id, @members.collect { |m| [ m.full_name, m.id ] }, include_blank: true %>
</div>
<div class="form-group">
<%= m.submit "Add", class:"btn btn-primary" %>
</div>
<% end %>
這是一個非常愚蠢的方式來做到這一點。理想情況下,我想擁有一組單選按鈕,可以說「父母」,「兄弟」和「孩子」。用戶必須點擊其中一個按鈕,但只能點擊其中一個按鈕。當表單被提交時,當前成員和新成員之間的關係根據單擊哪個單選按鈕來建立。我目前的策略根本不更新當前成員。這種關係只能在一個方向上引用。這種方法還需要選擇其他成員......這不是我想要的。
我應該通過表使用has_many嗎?幫幫我!
'我現在的方法不更新當前成員在所有'你談論哪種方法?爲什麼它不起作用,有任何錯誤或驗證?也分享你的模型 –
我不是一個文字方法。我只是指我的策略。抱歉。措辭不佳。 –