簡體   English   中英

如何在Rails中存儲屬性的集合?

[英]How should I store a collection for an attribute in Rails?

我有具有屬性category MyModel 類別1類別2只有兩個可能的類別。 使用如下形式分配屬性:

<%= f.input :category, collection: category_options %>

Rails中所謂的“良好實踐”。 我應該將屬性另存為db中的字符串,還是應該為集合創建一個新表/引用?

將類別存儲為字符串的好處是可以使數據庫保持干凈,但必須將集合單獨存儲在控制器中。 另外,由於我使用的是i18n,所以我希望將類別存儲為字符串會導致翻譯問題。

如果您打算根據業務邏輯為每個類別都具有一些屬性,方法或其他東西,則應該為Category創建另一個模型。 從管理復雜性的角度來看,實現您的未來需求將不那么困難。 如果您100%確信類別不會再有其他功能,則應使其成為屬性,並在代碼中添加一些驗證(例如,包含在category1category2 )。

對於簡單的情況,我通常使用類似這樣的東西。 您可以使用內部字符串作為鍵來選擇UI選項。

# View Code:
# <%= form.select :role, MyModel.categories, prompt: '' -%>

class MyModel < ActiveRecord::Base

  validates :category,
            presence: true,
            inclusion: {
              in: :categories,
              allow_blank: true }

  class << self

    def categories
      %w[hot warm cold]
    end

  end


  def categories
    self.class.categories
  end


end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM