Попытка обновить SQLite в Rails без создания дубликатов данных

#rails-activerecord #unique-constraint

#rails-activerecord #уникальное ограничение

Вопрос:

Я действительно не знаю подходящего языка, чтобы задать этот вопрос; однако я пытаюсь обновить базу данных моего rails SQLite и сохранить уникальные значения. Поэтому я не хочу создавать повторяющиеся значения. В моей таблице есть столбец «X», а для столбца «X» только одно значение поля 10,20,30 или 40. однако все они могут иметь значение 0. В моем коде нет полиморфного присваивания.

Я попытался с помощью помощника очистить все значения 10s, прежде чем присваивать обновляемому полю новые значения 10.

Помощник

  def clear_then_assign(number)
    Gallery.where(UserCode: current_user.code).rewhere( SPCode: number).each do |nix|
    nix.SPCode = nil
    end
  

возврат (число)
конец

встроенный код:

 <% if current_user.Admin == true %>
 <label for="spread">Photo Spread:</label>
    <br><%= f.radio_button :SPCode,  clear_then_assign(10),  :checked => false %> Lead
    <br><%= f.radio_button :SPCode, 20,  :checked => false %> Pic 2
    <br><%= f.radio_button :SPCode, 30,  :checked => false %> Pic 3
    <br><%= f.radio_button :SPCode, 40,  :checked => false %> Editorial
    <br><%= f.radio_button :SPCode, 'nil', :checked => false %> NONE
<% end %>
  

Это не выдает мне ошибку, но абсолютно ничего не делает. Любые предложения.

Комментарии:

1. Просто любопытно, кто-нибудь понял, что я пытался здесь сказать?

Ответ №1:

Извините, я не использовал save, теперь мой код читает:

  def clear_then_assign(number)


    Gallery.where(UserCode: current_user.code).rewhere( SPCode: number).each do |nix|
      nix.SPCode = 0
      nix.save
    end
  

возврат (число)
конец