избегая дубликатов в отношении has_many: through - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть has_many через настройку связи между моделью пользователя и моделью библиотеки. Модель пользователя:

class User < ApplicationRecord
  has_many :libraries, dependent: :destroy
  has_many :articles, through: :libraries
end

Модель статьи:

class Article < ApplicationRecord
  geocoded_by :address
  after_validation :geocode, if: :will_save_change_to_address?

  belongs_to :newspaper
  has_many :libraries
  has_many :users, through: :libraries
end

Модель библиотеки:

class Library < ApplicationRecord
  belongs_to :user, optional: true
  belongs_to :article, optional: true
end

Когда я go при обновлении статей, создается новая библиотека, но она не должна:

def update
    @myarray = Array.new
    @myarray = @article.user_ids
    @mylibrary = @library

    if @myarray.include?(@user[:id])
       @myarray.delete(@user[:id])

    else
       @myarray << @user[:id]
    end

    @article.update(user_ids: @myarray)
    @article.save!

    redirect_to article_path(@article)

Помоги мне Обиван Кеноби, Ты моя единственная надежда

...