1

こんにちは、Channel モデルを含む Rails アプリを持っています。その属性は次のとおりです。

   # Table name: channels
   #
   #  id             :integer          not null, primary key
   #  created_at     :datetime
   #  updated_at     :datetime
   #  channel_name   :string(255)
   #  classification :string(255)      default("0")
   #  ownership      :string(255)      default("0")

アプリの rake タスクが csv ファイルを読み取り、データベースに情報を入力しました。これは、モデルを作成するコードのスナップショットです

    ...previous code........

    channelName = nil
    classif = nil
    owner = nil
    channelName = row[0].force_encoding('UTF-8')
    classif = row[1].force_encoding('UTF-8')
    owner = row[2].force_encoding('UTF-8') 

if (channelName.nil?)
       puts "Channel name for row #{i} was nil"
       next 
    else                                    
       puts "Creating channel hash with information:"
   puts "channel_name= #{channelName}"
   puts "classification=#{classif}"
   puts "ownership= #{owner}"

   ch = Channel.where(:channel_name =>"#{channelName}").first_or_create do |c|
   c.ownership = "#{owner}"
   c.classification = "#{classif}"

タスクは csv ファイルを読み取ってデータベースに入力できたので、「first_or_create」メソッドの「作成」部分が機能します。ただし、csv ファイルの一部を変更して rake タスクをやり直すと、変更された内容でデータベースが更新されるはずです。これをしていません。私のメソッドの構文と関係があるのだろうか?ブロックの部分が間違っていますか?

4

1 に答える 1