1

在我的项目中,我有两个模型,Treatment并且Category

 class Category < ActiveRecord::Base
   attr_accessible :typ
   has_many :treatments
 end  

 class Treatment < ActiveRecord::Base
   belongs_to :patient
   belongs_to :category
   attr_accessible :content, :day, :typ, :category_typ
 end

所以在我的治疗表格中,用户还可以选择类别(大约 4 个类别):

<div class="field">
  <%= f.label :category_id %><br />
  <%= f.collection_select :category_id, Category.find(:all), :id, :typ %>
</div>

所以我的问题是,我可以Treatment根据表单中选择的类别对模型进行验证吗?如何?

4

2 回答 2

2

has_many :treatmentsin Category 和belongs_to :categoryin Treatment 意味着 Treatment 只能有一个类别。

您只需要对更新进行验证(创建新的和更新)。你可以这样写:

before_save :validate_based_on_category

并在方法中实现您的自定义验证:

private
  def validate_based_on_category
    #your validation
  end

将它作为私有方法也很好

于 2013-06-16T18:42:12.527 回答
0

您可以使用

validate :something_based_on_category

def something_based_on_category
  if self.category==.....
end

errors.add当您想向模型添加错误时也可以使用。

于 2013-06-16T18:32:41.613 回答