#258 Token Fields(修订版) - 如何创建新作者?

时间:2013-01-24 03:49:51

标签: ruby-on-rails ruby-on-rails-3.2 railscasts

我正在尝试按照#258令牌字段(修订版)进行。我不知道代码是如何创建作者的,我感觉与下面的代码有关,但我不确定。

请解释代码如何创建作者?

在/app/models/book.rb

def author_tokens=(tokens)
    self.author_ids = Author.ids_from_tokens(tokens)
end

链接到第http://railscasts.com/episodes/258-token-fields-revised?view=asciicast

谢谢!

1 个答案:

答案 0 :(得分:1)

此代码实际上并不创建作者。作者本身需要已经创建。此代码将获取作者的令牌,并将其转换为ID。所以这本书会有很多作者。

您可以在下面的图片中看到,在创建图书时,作者已经存在。我们正在从书中选择

choosing image

图片来源:http://railscasts.com/episodes/258-token-fields-revised?view=asciicast

更新

在剧集结束时,如果找不到新作者,系统将创建新作者。这是由以下代码创建的:https://github.com/railscasts/258-token-fields-revised/blob/master/bookstore-tokeninput-after/app/models/author.rb

  class Author < ActiveRecord::Base
    ##...
    def self.ids_from_tokens(tokens)
      tokens.gsub!(/<<<(.+?)>>>/) { create!(name: $1).id }
      tokens.split(',')
    end
  end

因此,如果令牌带有&lt;&lt;&gt;&gt; (它从Author.tokens方法发送),它将创建作者,然后获取ID并返回它。