当我在 http://guides.rubyonrails.org/active_record_migrations.html 中在线提及 active_record_migrations 时
在以下代码段中:
以下声明是什么意思?
execute <<-SQL
ALTER TABLE distributors
ADD CONSTRAINT zipchk
CHECK (char_length(zipcode) = 5);
SQL
使用
rails db:migrate
运行此迁移,出现错误:SQLite3::SQLException: near "CONSTRAINT": syntax error: ALTER TABLE distributors
ADD CONSTRAINT zipchk
CHECK (char_length(zipcode) = 5) NO INHERIT;
有关更多详细信息,请参阅 3.9 Using reversible。
最佳答案
它被称为 heredoc 并且与迁移、SQL 或其他任何特定内容无关:
由于 ActiveRecord::ConnectionAdapters::DatabaseStatements# execute
接受一个字符串作为参数,您传递的是这个字符串,只是格式正确。
关于ruby-on-rails - Rails 中的 `execute <<-SQL` 是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40394654/