我是RAILS的新手,所以不要打我。 我考虑过这样的问题:
- author
has_many :books
- book
belongs_to :author
在控制台中,我按照例子创建了一个新作者:
ar = Author.new(fname: "Frank", lname: "Herbert")
保存前未设置此记录的ID。
然后我从对象ar创建了一些书:
ar.books.new(title: "Dune"), ar.books.new(title: "The Green Brain")
没有错误。但是当我列出书籍时:
ar.books.all
得到一个空列表。
我发现首先我必须保存ar
,然后才能添加书籍。
有没有办法保存ar
书籍,之前不需要保存ar
没有书籍?
答案 0 :(得分:1)
按照以下代码: 首先创建作者,然后创建作者作为外键的书籍。
ar = Author.new(fname: "Frank", lname: "Herbert")
ar.save
ar.books.create(title: "Dune")
ar.books.create(title: "The Green Brain")
OR
ar = Author.new(fname: "Frank", lname: "Herbert")
ar.books.build(title: "Dune")
ar.books.build(title: "The Green Brain")
ar.save
答案 1 :(得分:1)
当然可以!
您需要致电ar.books
查找已添加的图书。当你调用ar.books.all
ActiveRecord尝试在数据库中找到某些东西时(显然它返回空数组)。所以只是:
author = Author.new(fname: "Frank", lname: "Herbert")
author.books.build(title: "Dune")
author.save
它将保存作者和你期望的书籍。顺便说一句,使用build
方法代替new
。通过这种方式,您可以表明即将创建记录。