對於從屬模型包含什麼樣的驗證?例如,假設你有章節的書籍。每本書的章節數量是在書籍第一次創建時確定的。在rails中驗證模型關係
class Book < ActiveRecord::Base
has_many :chapters
def build_chapters(count)
(1..count).each do |i|
chapters.build(:sequence_number => i)
end
end
end
class Chapter < ActiveRecord::Base
belongs_to :book
validates_presence_of :book_id, :sequence_number
end
class BooksController < ApplicationController
def create
@book = Book.new(params[:book])
@book.build_chapters(4) #to simplify example, hardcode number of chapters
@book.save
# View-related code omitted for simplicity
end
end
當我運行此我得到一個「章節是無效的」每章錯誤(4個錯誤,當硬編碼類似的例子)。在構建調用中明確設置:book_id不起作用。
但是,如果我在添加章節之前保存該書,它將起作用,沒有錯誤。如果我在第一章中驗證了它的有效性,那麼不會有錯誤。但是這些解決方法都不能讓我開心。一本書不應該被允許在沒有章節的情況下存在於數據庫中,並且一章不應該被允許存在於數據庫中而不被鏈接到一本書。什麼是強制執行關係約束的正確方法?
我是ruby和rails的新手,所以完全有可能我只是沒有考慮rails-ese。請edumacate我。
有關爲什麼問題被低估的任何反饋? – Darryl 2015-09-30 16:58:56