繁体   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