# article.rb
class Article < ActiveRecord::Base
has_many :article_categories, dependent: :destroy
has_many :categories, through: :article_categories
validates :title, :description, :body, presence: true
validates :categories, presence: true
validates_associated :categories
end
#articles_controller.rb
def create
@article = Article.new(params[:article])
respond_to do |format|
if @article.save
format.html { redirect_to @article, notice: 'Article was successfully created.' }
format.json { render json: @article, status: :created, location: @article }
else
format.html { render action: "new" }
format.json { render json: @article.errors, status: :unprocessable_entity }
end
end
end
У меня есть статья, связанная с одной или несколькими категориями.Я хочу убедиться, что статья присваивается категории каждый раз, когда запись сохраняется.При обновлении это работает нормально, но при создании я получаю unprocessable entity
, потому что не может быть создана ассоциация ArticleCategory
, так как для нее требуется id
статьи.Но id
не устанавливается до тех пор, пока Article
не будет сохранено.Но я не могу сохранить недействительные модели.Вы поняли идею.Как я могу create
объекты, не жертвуя своими проверками?
Редактировать: Я исправил строку проверки.Это убрано, чтобы удалить некоторые другие вещи, поэтому я случайно удалил presence: true