Ввод формы, требующий, чтобы поле не было нулевым - PullRequest
0 голосов
/ 12 июня 2019

Я перемещаю свое приложение с рельсов 4.2 на 5.2, в этом переходе я наткнулся на ошибку, которую я не знаю, как исправить.Этот фрагмент кода был написан для меня, так как я не имел ни малейшего понятия, как его выполнить в то время.Мой стол для людей, внутри этого стола боссы и не боссы, и эти не боссы должны быть в состоянии быть прикрепленными к боссам.

1002 * В новой области развития, когда я представляю свою форму для обновления человека, который "Boss" должен быть null Я получаю следующее: 1 error prohibited this person from being saved: Boss must exist

Контроллер:

def edit
    @person = Person.find(params[:id])
end
1009 * Модель:
belongs_to :boss, class_name: 'Person'
has_many :subordinates, class_name: 'Person', foreign_key: 'boss_id'

validates_presence_of :user_name, :position, :fname, :lname 

Схема:

t.integer "boss_id"
t.index ["boss_id"], name: "index_people_on_boss_id"

Форма:

<% if @person.errors.any? %>
        <div id="error_explanation">
            <h2><%= pluralize(@person.errors.count, "error") %> prohibited this person from being saved:</h2>

            <ul>
                <% @person.errors.full_messages.each do |msg| %>
                  <li><%= msg %></li>
                <% end %>
            </ul>
        </div>
    <% end %>

    <fieldset>
        ...many fields...
    </fieldset>
    <fieldset>
        <label>
            Boss
            <%= f.select :boss_id, [[" ", :null], [name, 1], [name, 2], ...etc ] %>
        </label>
    </fieldset>
<%= f.submit %>
<% end %>

Я не знаю, где еще искать ответк этому.

1 Ответ

2 голосов
/ 12 июня 2019

Belongs_to требует, чтобы родительский объект присутствовал по умолчанию во время создания.Если вы создадите дочерний объект без родителя, вы получите сообщение об ошибке «должен существовать», поэтому ваш объект недопустим.

Если вы хотите такое поведение, вам нужно будет передать этоопция:

#person.rb
belongs_to :boss, class_name: 'Person', optional: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...