[英]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%確信類別不會再有其他功能,則應使其成為屬性,並在代碼中添加一些驗證(例如,包含在category1
, category2
)。
對於簡單的情況,我通常使用類似這樣的東西。 您可以使用內部字符串作為鍵來選擇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.