0

我正在尝试关注剧集 #258 Token Fields(已修订)。不知道代码是怎么创建作者的,感觉跟下面的代码有关系,但不确定。

请您解释一下代码是如何创建作者的?

在 /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

谢谢!

4

1 回答 1

1

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

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

选择图像

图片来源: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

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

于 2013-01-24T04:28:55.870 回答