# 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
答案 0 :(得分:0)
您可以尝试验证联接表的存在,而不是验证文章是否包含多个类别,例如:
# article.rb
validates :article_categories, presence: true
答案 1 :(得分:-2)