1

我的表单中有一个集合选择:

<div class="field">
    <%= f.label :area %>
    <%= f.collection_select(:area_id, Area.all, :id, :name, include_blank: "No area.") %>

而且我的模型验证对区域没有要求。

我的理解是,使用 include_blank 可以让我选择 nil。但是我收到一个验证错误“区域必须存在”

编辑:

这是模型中的重要代码:

has_many :ratings, dependent: :destroy
has_many :noise_ratings, dependent: :destroy
has_many :statuses, dependent: :destroy
has_many :checkins, dependent: :destroy

has_and_belongs_to_many :features

belongs_to :area
belongs_to :campus

validates :name, presence: true, uniqueness: { scope: :campus_id, message: "unique space for each campus." }
validates :description, presence: true
validates :campus_id, presence: true
4

2 回答 2

3

Rails 5 强制你设置所有的belongs_to关联,除非你指定optional: true。添加它是为了防止数据不一致,因此,如果您希望它的行为与以前的 rails 版本一样,您只需将关联更改为:

belongs_to :area, optional: true
于 2016-07-22T22:47:11.383 回答
1

在 Rails 5 中,默认设置为 true。请检查belongs_to文档中的 :optional 和 :required 选项以获取更多详细信息。

于 2016-07-22T22:40:44.197 回答