Emm*_*ali 3 ruby ruby-on-rails
代码
class Survey < ApplicationRecord
has_many :questions, inverse_of: :survey, :dependent => :destroy
accepts_nested_attributes_for :questions
validates_associated :questions
end
class Question < ApplicationRecord
belongs_to :survey, inverse_of: :questions
validates_presence_of :survey
end
Run Code Online (Sandbox Code Playgroud)
我的调查控制器
def new
@survey = Survey.new
2.times {@survey.questions.build}
end
Run Code Online (Sandbox Code Playgroud)
形式
<%= form_for @survey do |f|%>
<p>
<%= f.label :name%>
<%= f.text_field :name%>
</p>
<%= f.fields_for :questions do |builder|%>
<p>
<%= builder.text_area :content, rows: 3%>
</p>
<% end %>
<p><%= f.submit %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
正如您在用户创建调查时所看到的,表单提供了两个问题,我希望用户在创建调查时至少提供一个问题。怎么可能实现???
你可以只测试数组的长度,然后简单地做:
validates :questions, length: {minimum: 1, message: 'should have at least 1 question defined.'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |