添加到rails中的多个表

rob*_*ntw 5 ruby ruby-on-rails

我敢肯定这是一个相对简单的问题,并且必须有一个很好的合理的轨道方式,但我不确定它是什么.

基本上我将书籍添加到数据库中,我想将作者存储在一个单独的表中.所以我有一个叫做作者的表,由表格书引用.

我想创建一个用于添加书籍的rails表单,我希望它只是Author,Title,Publisher等的简单表单,如果它发现作者已经在authors表中,那么它应该只引用该记录,如果它不在authors表中,那么它应该添加一条新记录并引用它.

我确信在rails中有一种简单的方法 - 但我似乎无法找到它.

干杯,

知更鸟

Mic*_*cah 6

假设您的表单传递了author_name和带有book属性的书籍哈希,您可以在控制器中执行以下操作:

@author = Author.find_or_create_by_name(params[:author_name])
@book = Book.new(params[:book])
@book.author = @author
@book.save
Run Code Online (Sandbox Code Playgroud)

这将通过该名称找到作者,或创建一个,然后将该作者分配给创建的书.

注意:这也假设作者可以通过他们的名字进行唯一标识,而这通常不是这种情况.例如,可能会有多个家伙把"Steven King"命名为"Steven King",其中只有一个人写了The Shining


Hon*_*nza 5

我建议你在这里观看复杂形式系列的Railscasts .