我正在尝试在记录上使用 update_attributes,但它失败了,我不知道为什么,我必须错过一些明显的东西,因为我已经多次使用该方法。
我正在尝试为Globalize3
用于其名称变量的模型播种数据。
class City < ActiveRecord::Base
attr_accessible :name
translates :name
end
请注意, City 没有名为 的列name
。
在控制台中,我做类似的事情没有问题city.update_attributes(name: "new name")
,但是下面的代码(in seeds.rb
)总是失败,Undefined method
首先是for nil:NilClass
:
localized_cities_attributes = [
{ en: { name: "New York City" }, fr: { name: "New York" } },
{ en: { name: "Montreal" }, fr: { name: "Montréal" } }
]
localized_cities_attributes.each do |city_localized_attributes|
city = nil
city_localized_attributes.each do |locale, attributes|
with_locale(locale) do
if city
city.update_attributes(name: attributes[:name])
elsif (city = City.find_by_name(attributes[:name])).nil?
city = City.create(attributes)
end
end
end
end
with_locale
被定义为:
def with_locale(new_locale, &block)
return if block.nil?
locale_to_restore = I18n.locale
I18n.locale = new_locale
block.call
I18n.locale = locale_to_restore
nil
end