6

複雜的關係從我的another question使用ActiveRecord實現的Rails

我需要做到這一點是:他們 自己指定的信息字段創建多個類別(即汽車具有 寵物不同的領域。 ),一旦創建了這樣的類別,我需要的命令是 ,併爲每個類別創建一個新表格。我知道我可以 作爲某種字符串存儲所有領域,然後處理它,以正確顯示 它,但我需要我的網絡應用程序的高級搜索功能和 爲每個類別創建單獨的表似乎是最好的方式 實現它。我真的希望聽到這個替代品

所以我有這種情況下,我需要類別來保存該特定類別所需的所有輸入字段。因此,在管理部門中,我可以使用這種形式在其中添加類別名稱,一些其他相關信息到類別本身,然後這些字段收集關於向用戶呈現給用戶的什麼HTML字段的信息進入這個特定的類別。

例如,這將是一個狗類:

  • 類別名稱:狗
  • 類別啓用:1個
  • 類別父:寵物
  • 領域:
    • 標題 - 文本字段(將自動添加到每個類別)
    • 品種 - 選擇字段
    • 時代 - 數字領域
    • 顏色 - 文本字段
    • 價格 - 域(將自動添加到各類別)
    • 描述 - 文本區字段(將自動添加到各類別)

所以現在在這個階段,當用戶爲Dog類別創建所有這些特定字段時,Im很難確定當用戶點擊提交按鈕來保存這個類別時會發生什麼。我認爲這兩種解決方案:

  • 爲每個新類別的新模式/表(讀取鏈接的問題上)與所有的HTML字段爲列,還可以存儲在categories表中的行有關的一些基本信息這個類別
  • 將所有內容存儲在categories表中,並有一個fields_json列,它將存儲所有的HTML字段信息(我不會實際存儲HTML,但基本信息的字段是什麼,然後在控制器中動態創建HTML表單域)作爲JSON字符串。我將能夠在create上很好地顯示這些字段,但是在update上填充這些字段(可能)會很麻煩,並且搜索功能對於此替代方式效率不高。

所以我在找的是第三個選擇,所以我可以解決我的問題。什麼是解決此問題的有效方法,並且能夠使用不同輸入字段的類別並且能夠有效地對這些類別執行搜索?

我正在處理的項目是在Ruby on Rails 4中創建的,數據庫在MySQL中。

+0

你可以切換到Postgres嗎?它有一個JSON類型,可以用來高效地查詢動態屬性。 Rails會正確處理這種類型,所以你只需要使用散列。 – 2014-12-10 22:43:04

+0

我以前從未使用過Postgres,所以我對使用它沒有信心。 – Aborted 2014-12-10 22:44:15

+0

它的基本功能與mysql不是很不一樣。 Imho這將是該工作的正確工具。 – 2014-12-11 05:06:30

回答

1

對於給定的情況下我會:

  1. 創建表類別存儲每個類別
  2. 創建表category_fields存儲每個類別字段
  3. 創建表collected_categories來存儲所有收集來自序列化哈希中類別字段的數據

收集的數據可以很容易地(反)序列化到文本列中(不管您將使用哪種數據庫引擎)。

檢查那些利用你的問題的來源:dynamic forms