所以我在我的种子中得到了这个.rb
15.times do
topic = Topic.create(
name: Faker::Lorem.word,
)
color = topic.color_topic
topic.update_attributes(color:color)
end
在模型中调用它
def color_topic # distributes color-0 thru color-4 equally through all topics
puts self.id
"color-#{self.id % 5}"
end
我不断得到这样的东西
122
123
124
125
126
127
128
129
130
rake aborted!
NoMethodError: undefined method `%' for nil:NilClass
因此,ruby会在ActiveRecord分配id之前运行吗? 我以为这种逻辑一直在使用。 我错过了什么?
答案 0 :(得分:1)
在播种具有唯一性限制的数据方面,我不建议将其留给随机机会(即Faker :: Lorem)。这样做更容易:
(1..15).each do |i|
topic = Topic.create(name: "name#{i}")
end
另外,作为旁注,您可能希望使用工厂女孩为您的数据播种,因为它比开箱即用的播种框架更强大:https://github.com/thoughtbot/factory_girl