在我的列表模型中,我设置了一个方法
def set_listing_number
listing_number="TM#{created_at.year}#{id}"
end
我有一些记录是在我运行迁移以创建listing_number列之前创建的。我想一次更新所有记录但仍然收到此错误。 这是我运行的代码,在控制台中生成错误,验证方法是否正确。它工作,我无法保存任务。
listing_number=listing.set_listing_number
=> "TM2014574"
2.0.0-p247 :003 > listing_number.save
NoMethodError:“TM2014574”的未定义方法“save”:字符串
我尝试了一对没有成功的人,我也在这里找到了这样的一个
Listing.all.each{|n| n.update_attributes(:listing_number =>"TM#{n.created_at.year})}
问题如何立即更新以前的记录。可能它很基本,但无法弄明白。谢谢
答案 0 :(得分:1)
你在字符串上调用save
。您的代码中需要listing.save
。
答案 1 :(得分:1)
# This method in Listing Model
def set_listing_number
listing_number="TM#{created_at.year}#{id}"
end
# In controller
Listing.all.each do |listing|
listing.set_listing_number
listing.save
end
或者您可以将其重构为
Listing.all.each do |listing|
listing.update listing_number: "TM#{listing.created_at.year}"
end