ユーザー、ブック、およびチャプターで構成される一連のネストされたリソースがあります。これがどのように見えるかです。
モデル
class User
has_many :books, dependent: :destroy
accepts_nested_attributes_for :books, allow_destroy: true
end
class Book
belongs_to :user
has_many :chapters, dependent: :destroy
accepts_nested_attributes_for :chapters, allow_destroy: true
end
class Chapter
belongs_to :book
end
チャプターコントローラー
def create
@chapter = @book.chapters.build(params[:chapter])
if @chapter.save
flash[:success] = "A new chapter created!"
redirect_to blah blah
else
render 'new'
end
end
protected
def get_book
@book = Book.find(params[:chapter][:book_id]) ||
Book.find(params[:book_id])
end
なぜ私がその保護されたメソッドを持っているのか不思議に思うかもしれません。私は、ユーザーが別のページで章と本を作成できるようにしようとしていますが、ネストされたリソースを持つという利便性を維持しています。したがって、ユーザーは章作成ページで章を作成し、関連付けフォームを介してその章を適切な本に関連付けることができます。
現在、チャプター リソースが必要なユーザー ID を取得していないため、行き詰まっています。私は Web 開発に非常に慣れていないので、ここでクレイジーなことをしている可能性があります。どんな助けでも大歓迎です。私は本当にこれを機能させたいと思っています。
編集:「チャプターリソースが必要なユーザーIDを取得していない」という意味の詳細を説明するために、チャプターモデルで*validates :user_id、presence: true*を書きました。章の作成ページで送信ボタンを押すと、user_id を空白にできないというエラーが表示されます。