- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Ruby & Rails 的新手,我正在尝试使用来自两个 CSV 文件的数据为 Rails 数据库播种,并在它们之间创建关联。这是我目前所拥有的:
种子.rb
require "csv"
City.destroy_all
Skyscraper.destroy_all
csv_text = File.read(Rails.root.join("public", "cities.csv"))
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
c = City.new
c.city_name = row["city_name"]
c.country = row["country"]
c.save
puts "#{c.city_name}, #{c.country} saved"
end
csv_text = File.read(Rails.root.join("public", "skyscrapers.csv")).encode!("UTF-8", "binary", invalid: :replace, undef: :replace, replace: "?")
csv = CSV.parse(csv_text, :headers => true, :encoding => "iso-8859-1:utf-8")
csv.each do |row|
s = Skyscraper.new
s.rank = row["rank"]
s.name = row["name"]
s.city_name = row["city_name"]
s.country = row["country"]
s.heightM = row["heightM"]
s.heightF = row["heightF"]
s.floors = row["floors"]
s.completedYr = row["completedYr"]
s.materials = row["materials"]
s.use = row["use"]
city = City.find_by(city_name: row["city_name"])
s.city = city
s.save
puts "#{s.rank}, #{s.name}, #{s.city_name}, #{s.country}, #{s.heightM}, #{s.heightF}, #{s.floors}, #{s.completedYr}, #{s.materials}, #{s.use} saved"
end
迁移:
class CreateCities < ActiveRecord::Migration
def change
create_table :cities do |t|
t.string :city_name
t.string :country
end
end
end
class CreateSkyscrapers < ActiveRecord::Migration
def change
create_table :skyscrapers do |t|
t.integer :rank
t.string :name
t.string :city_name
t.string :country
t.integer :heightM
t.integer :heightF
t.integer :floors
t.integer :completedYr
t.string :materials
t.string :use
t.references :city, index: true, foreign_key: true
end
end
end
架构.rb
ActiveRecord::Schema.define(version: 20160603210529) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "cities", force: :cascade do |t|
t.string "city_name"
t.string "country"
end
create_table "skyscrapers", force: :cascade do |t|
t.integer "rank"
t.string "name"
t.string "city_name"
t.string "country"
t.integer "heightM"
t.integer "heightF"
t.integer "floors"
t.integer "completedYr"
t.string "materials"
t.string "use"
t.integer "city_id"
end
add_index "skyscrapers", ["city_id"], name: "index_skyscrapers_on_city_id", using: :btree
add_foreign_key "skyscrapers", "cities"
end
我能够完成所有迁移并为种子文件的“城市”部分播种。但是当我播种“摩天大楼”时,出现以下错误:
NoMethodError: undefined method `city=' for #<Skyscraper:0x007fa6ec913be8>
/Users/AndrewSM/.rvm/gems/ruby-2.2.3/gems/activemodel-4.2.6/lib/active_model/attribute_methods.rb:433:in `method_missing'
/Users/AndrewSM/wdi/Projects/skyscrapers/db/seeds.rb:42:in `block in <top (required)>'
/Users/AndrewSM/wdi/Projects/skyscrapers/db/seeds.rb:29:in `<top (required)>'
/Users/AndrewSM/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `load'
/Users/AndrewSM/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `block in load'
/Users/AndrewSM/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/AndrewSM/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `load'
/Users/AndrewSM/.rvm/gems/ruby-2.2.3@global/gems/railties-4.2.6/lib/rails/engine.rb:547:in `load_seed'
/Users/AndrewSM/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.6/lib/active_record/tasks/database_tasks.rb:250:in `load_seed'
/Users/AndrewSM/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.6/lib/active_record/railties/databases.rake:183:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)
在 seeds.rb 中,第 42 行引用“s.city = city”,第 29 行引用“csv.each do |row|”。最初我认为外键中的城市与表中也名为“city”的行之间可能存在冲突,所以我将每个表中的行标题更改为“city_name”(这些曾经只是“city” ).但是,我得到了同样的错误。当我注释掉第 42 行 (s.city = city) 时,一切都会迁移和播种,但没有关联。
提前感谢您的反馈。
最佳答案
尝试将“id”主键列添加到“cities”表(实际上,在所有表上都有“id”是一个很好的做法),然后将第 42 行更改为:
s.city_id = city.id
关于ruby-on-rails - Ruby & Rails - 使用 CSV 中的关联播种数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37925197/
从 PHP7 开始,为 PRNG 引入了一个新函数:random_int ( http://php.net/manual/en/function.random-int.php ) PHP 手册中没有与
在 .net 核心项目中,我像这样在 Program.cs 文件中播种: var host = BuildWebHost(args); using (var scope = host.Services
我有一张谷歌地图,上面有大约 200 个标记。使用谷歌距离矩阵服务,我可以找到从一个地址到 map 上所有标记的行驶距离。由于 API 限制,我每次调用只能提交 25 个目的地,因此我必须将操作分解为
下面的脚本抛出错误(自定义字段未定义)。我需要以不同的方式传递元素 ID 吗? 我正在尝试使用我要计算的表单字段来为数组播种。它应该迭代数组中的每个表单字段,并用表单元素的值递增 sum 变量。 jQ
我正在学习“Laravel 5 Essentials”中的教程。当我尝试使用命令为我的数据库播种时 php artisan db:seed 我收到错误 [ReflectionException]
我正在关注 docs为 users 表设置种子,该表显示正在使用 User::create class UserTableSeeder extends Seeder { public func
让我首先说明我要完成的任务: 我需要在一定范围内随机生成一组数字 我希望这些数字稍微均匀分布 我需要能够为随机数生成播种,这样,给定一个种子,生成的随机数将始终相同。 在对 drand48()、ran
这个问题在这里已经有了答案: Recommended way to initialize srand? (15 个答案) 关闭 9 年前。 我学习的方法是最初使用 srand(time(NULL))
SQLite 是否支持播种 RANDOM() 的功能与 MySQL 对 RAND() 的处理方式相同? $query = "SELECT * FROM table ORDER BY RAND(" .
我正在使用不支持的 Visual Studio 2010 ,所以我必须播种 default_random_engine .因此,我决定用 rand 播种它如下 srand((unsigned int
在 google OR-tools 库中,“原始”CP-Solver(此处讨论: https://developers.google.com/optimization/cp/original_cp_s
我正在尝试为 AspNetRole 表设置初始系统角色。 播种扩展: public static void EnsureRolesAreCreated(this IApplicationBuilder
我似乎无法弄清楚如何使用 Sequelize 为 ARRAY(ENUM) 播种。当我通过我的应用程序注册用户时,我可以很好地创建一个新用户,但是当我在种子文件中使用 queryInterface.bu
以下代码应创建两个具有相同种子的 Random 对象: System.out.println("System time before: " + System.currentTimeMillis());
尝试从集合中选择伪随机元素时,我看到了非确定性行为,即使 RNG 已播种(示例代码如下所示)。为什么会发生这种情况,我是否应该期望其他 Python 数据类型表现出类似的行为? 注意:我只在 Pyth
关于在 openssl/bn.h 中使用 BN_generate_prime 生成质数的内容,我无法找到答案。另外,我将如何播种此函数使用的任何 PRNG? 单独的问题但与我的代码相关(我正在编写一个
所以,我是 MEAN 堆栈的新手,我在尝试播种 MongoDB 时碰壁了。我正在使用 Mongoose 与数据库进行通信,并且有一堆文档建议我应该能够使用填充的 JSON 文件进行播种。 我尝试过的:
我有一个非常简单的情况:我想使用 testcontainers 测试 AWS 中现有的 mysql 数据库。 我遵循了官方指南( https://www.testcontainers.org/modu
我有一个很长(500K+ 行)的两列电子表格,如下所示: Name Code 1234 A 1234 B 1456 C 4556 A 4556 B 4556
我有一个要播种的数据透视表。除了 PK 和 FK,该表还包含另外两列:Arrival & Departure(类型:时间戳)。我正在使用 Carbon 随机填充前面的列。这是我的代码: $faker
我是一名优秀的程序员,十分优秀!