簡體   English   中英

Rails模型變量屬性

[英]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.

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