Здравейте, имам приложение за релси, което съдържа модел на канал. Неговите атрибути са както следва:
# 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")
Рейк задача в моето приложение е прочела 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 файла и да попълни базата данни, частта "create" на метода "first_or_create" работи. Въпреки това, когато променя някои неща в csv файла и повторя задачата за рейк, тя трябва да актуализира базата данни с промененото съдържание. Не прави това. Чудя се дали има нещо общо със синтаксиса на моя метод? грешна ли е блоковата част?