我正在尝试按照#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集
谢谢!
答案 0 :(得分: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
因此,如果令牌带有&lt;&lt;&gt;&gt; (它从Author.tokens方法发送),它将创建作者,然后获取ID并返回它。