Rails DB种子

时间:2010-07-08 01:26:21

标签: ruby-on-rails inheritance rake

出于某种原因,当我运行下面的seed.rb文件时,'rating'中的food_id字段不会填充。有人可以帮我找出原因吗?

种子文件包含以下行:

Food.create(:id => 1, :description => 'Stonyfield Farm Yomommy 4oz. Strawberry')
OverallRating.create(:score => 0, :count => 1, :food_id => 1)

食物及评级守则如下:     class OverallRating<评分       belongs_to:食物     端

class Food < ActiveRecord::Base
   has_one :overall_rating
end

class Rating < ActiveRecord::Base
  belongs_to :food
end

评级迁移文件如下:

class CreateRatings < ActiveRecord::Migration
  def self.up
    create_table :ratings do |t|
      t.integer :food_id
      t.integer :count
      t.decimal :score
      t.string :type
      t.timestamps
    end
  end

  def self.down
    drop_table :ratings
  end
end

3 个答案:

答案 0 :(得分:0)

你是如何调用seeds.rb文件的?您可能需要执行rake db:seed

答案 1 :(得分:0)

这真的是真正的代码吗?我猜你在Rating / OverallRating中有一个attr_accessible或attr_protected声明阻止在实例化对象中设置该选项。

答案 2 :(得分:0)

不要对id进行硬编码,而是尝试这样的事情:

food = Food.create(:description => 'blah')
food.create_overall_rating(:score => 0, :count => 1)

我只是尝试了你的确切方法,它对我没有任何问题。所以也许你还有其他的错误。