我可以使用rails console来识别唯一的种子数据

时间:2017-10-15 00:43:43

标签: ruby-on-rails ruby

甚至不确定这是(a)可以做的事情还是(b)我需要关注的事情。我有一个项目要写一个seeds.rb文件,用于查看带有测试数据的RoR应用程序。我的文件如下:

require 'random_data'

50.times do
Post.create!(
    title: RandomData.random_sentence,
    body: RandomData.random_paragraph
)
end
posts = Post.all

100.times do
Comment.create!(
    post: posts.sample,
    body: RandomData.random_paragraph
)
end

unique_post = {
title: 'unique title',
body: 'unique body'
}

unique_post_id = Post.find_or_create_by!(unique_post)

unique_comment = {
post: unique_post_id,
body: "unique comment"
}

Comment.find_or_create_by!(unique_comment)

puts "Seed finished"
puts "#{Post.count} posts created"
puts "#{Comment.count} comments created"
puts "#{unique_post.count} unique posts created"
puts "#{unique_comment.count} unique comments total"

一切正常。结果消息是:

Seed finished
251 posts created
501 comments created
2 unique posts created
2 comments total

我有两个问题:

  1. 为什么我最终得到2个独特的帖子和2个独特的评论?
  2. 我可以使用rails控制台识别这些独特的帖子和 评论
  3. 感谢。

1 个答案:

答案 0 :(得分:1)

您看到2个唯一帖子和评论的原因是因为您计算了对象属性的哈希键,而不是创建的对象。

{ key1: 123, key2: 456, key3: 789 }.count
=> 3

您只需查询表格即可使用Rails控制台查询这些独特的帖子/评论:Comment.find_by(title: 'unique title')