我理解在form_for中,我能够在我的模型中验证该表格的表格,但是如果我想在另一个表格中验证“f.submit”的数据呢?
具体来说,如果工作人员和电台都存在于他们各自的表中,那么工作人员只能在Checkout模型/表格中结账。
如何将Staff and Radio表格传入我的Checkout验证标准?
谢谢!
答案 0 :(得分:0)
Rails中的表单实际上并未链接到验证(与Symfony2不同),它们只显示错误消息。
您可以将资源嵌套在fields_for
的表单中,这与accepts_nested_attributes_for一起使用。
<%= form_for(@member) do |f| %>
<%= f.text_field(:name) %>
<%= fields_for :avatar, @member.avatar do |avatar_fields| %>
<%= avatar_fields.text :url %>
<% end %>
<% end %>
class Member < ActiveRecord::Base
has_one :avatar
accepts_nested_attributes_for :avatar
end
您可以为validates_associated
的模型关联创建验证,或者在声明关联时传递validates: true
。有关详细信息,请参阅this question。
class Member < ActiveRecord::Base
has_one :avatar, validate: true
accepts_nested_attributes_for :avatar
# or
# validates_associated :avatar
end
答案 1 :(得分:0)
听起来你只想在关联上使用状态验证(假设这些模型之间存在关联)。例如,如果您的结帐模型有radio_id和staff_id列,那么您可能有
belongs_to :radio
belongs_to :staff
validates :radio, presence: true
validates :staff, presence: true
如果这还不够,您可以使用validate
方法
课程结帐&lt;的ActiveRecord :: Base的 验证:something_custom
def something_custom
# call errors.add to mark the object as invalid
end
端
如果最终经常重复使用,也可以将其包装在验证器模块中。