我使用外键关联模型,但得到的名称冲突如何使用复合关联密钥?
型号:
class User < ActiveRecord::Base
belongs_to :status
end
class Poll < ActiveRecord::Base
belongs_to :status_poll
end
class Status < ActiveRecord::Base
has_many :users
end
class StatusPoll < ActiveRecord::Base
has_many :polls
end
模式:
create_table "polls", force: :cascade do |t|
t.string "title"
t.integer "status_poll_id", default: 0
end
create_table "status_polls", force: :cascade do |t|
t.string "title"
end
create_table "statuses", force: :cascade do |t|
t.string "title"
end
create_table "users", force: :cascade do |t|
t.integer "status_id", default: 0
t.string "name"
end
我试着通过的lib /任务/ data.rake popoulate民调:
namespace :data do
task :populate_polls => [:populate_users, :populate_status_polls] do
users = User.all.where(status_id: [1, 2])
users.each do |user|
polls_quantity = rand(7..21)
polls_quantity.times do |n|
Poll.create!(
title: Faker::Name.title + '_' + user.id.to_s + '_' + n.to_s,
user_id: user.id,
status_poll_id: rand(0..1),
description: Faker::Lorem.paragraph(7)
)
end
end
end
end
运行后填充控制台显示跟随误差信息鼠尾草:
kalinin @ kalinin〜/ rails/phs $ rake data:populate_polls rake aborted! ActiveRecord的:: RecordNotUnique:PG :: UniqueViolation:ОШИБКА: повторяющеесязначениеключанарушаетограничениеуникальности “statuses_pkey” DETAIL:Ключ “(ID)=(0)” ужесуществует。 :INSERT INTO “状态”( “ID”, “标题”)VALUES($ 1,$ 2)再次 “ID”
,但我不使用状态。我使用status_poll_id