こんにちは、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 タスクをやり直すと、変更された内容でデータベースが更新されるはずです。これをしていません。私のメソッドの構文と関係があるのだろうか?ブロックの部分が間違っていますか?