1

我正在尝试使用 seed.rb 文件中的一些 sql 语句为 Rails 应用程序播种。提供了 12 个值,但是该表有 15 列。额外的三列是 Rails 默认包含的自动生成的 id、created_at 和更新的列。如果我以下列方式在 seed.rb 文件中运行自定义 sql 语句......

connection = ActiveRecord::Base.connection()
query = "random sql"
connection.execute(query)

Rails 不会像我那样为我创建这些列

Employee.create!(name: "Joe")

当我在seed.rb中运行sql语句时,是否有向rails指示我需要填充值的id和timestamp列?

4

1 回答 1

0

不,因为 Rails 无法知道你是否"random sql"创建了任何记录来填充 ids/timestamps。

当你connection.execute独自一人时,你已经放弃了你的 ORM 并屈服于 SQL 的诱惑。

如果您可以使用 ActiveRecord 做到这一点,那就这样做吧!如果不是,那么,这就是为什么 Rails 允许您使用 SQL(但再想一想。您真的不能用 Ruby 编写它吗?)。

于 2013-01-16T01:08:20.933 回答