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 に答える