因為我本身使用 mysql ,所以這篇的範例也是 mysql 。

有時候用 AR 處理比較花時間又沒效率,但實在是需要做某些資料庫的動作時,就會想要直接用 sql 的語法來下指令。

這裡參考一篇文章:Execute sql within rails environment without using your models

rails 本身在 ActiveRecord 中,可以使用 execute method 來下 sql 的指令。但如果想在 rake 檔案裡面寫 sql 語法要怎麼辦呢?

這裡提供了範例:

namespace :db do
  desc "Cleanup the database by setting rows to deleted when older than xxx. Defaults to development database.  Set RAILS_ENV=[production, test, etc.] to override."
  task :cleanup => :environment do
    sql = <<-SQL
      -- 在這裡寫 sql 語法
    SQL
    # used to connect active record to the database
    ActiveRecord::Base.establish_connection
    ActiveRecord::Base.connection.execute(sql)
  end
end

如果你使用的 sql 指令只有一行,也可以只寫最後兩行,然後把敘述的最後面改寫成execute("sql 語法")

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()