[英]Rails model variable attributes
我有Post模型,該模型屬於Category,通常,Post具有幾個屬性(例如title:string,content:text等)。
類別的數量不會超過五個(現在只有3個),所以問題是:這是基於Post類別添加某些屬性的最佳方法。 例如,如果Post屬於category_1,則它將具有2個其他屬性(attr_1,attr_2),如果Post屬於category_2,則它將具有初始屬性+ 3個其他屬性(attr_3,attr_4,attr_5)。
我應該對此進行“硬編碼”還是最好將字段添加到Post模型中(例如,類似JSON的字段Additional_attributes)?
示例:3個類別,3個帖子(每個類別一個帖子)。 基本上,帖子有2個字段:標題,文本。 但是,如果帖子在category_1中,那么它也應該具有排名和歷史記錄;如果帖子在category_2中,則它不應該具有排名或歷史記錄,而應該具有分數。
我認為,只要將所有可能的屬性添加到Post模型並創建條件驗證器(取決於類別),就可以很好地解決這一問題。
class Post < ActiveRecord::Base
# This is always validated
validates :title, presence: true
# Validation for Posts with category type1
with_options if: Proc.new { |p| a.category.type == 'type1' } do |post|
post.validates :rank, length: { minimum: 10 }
post.validates :history, presence: true
end
# Validation for Posts with category type2
with_options if: Proc.new { |p| a.category.type == 'type2' } do |post|
post.validates :extra_field, length: { maximum: 20 }
post.validates :points, presence: true
end
end
您應該根據自己的需求調整確定要處理的類別類型的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.