有没有办法创建一个带有rails迁移的MySQL表,其中表没有UPDATE权限?

时间:2012-06-20 18:54:19

标签: mysql ruby-on-rails ruby migration

我正在寻找创建一个只读表,我认为MYSQL权限是最好的方法。

这是否可以通过迁移实现?

2 个答案:

答案 0 :(得分:2)

生成迁移文件,如下所示,

rails g migration add_permissions_to_table_name    
invoke  active_record
      create    db/migrate/20120620191050_add_permissions_to_table_name.rb

按如下方式编辑文件,

想想@ thinkComputer:〜/ Agile / ajax1 $ vi db / migrate20120620191050_add_permissions_to_table_name.rb

class AddPermissionsToTableName < ActiveRecord::Migration
  def up

    execute "GRANT SELECT ON database1.table_name TO 'someuser'@'somehost'"

  end

  def down

    execute "REVOKE SELECT ON database1.table_name TO 'someuser'@'somehost'"

  end

end

按如下方式运行rake任务,

$ rake db:migrate

将来如果要撤销该权限,请执行

$ rake db:migrate:down VERSION=20120620191050

您希望成为对“database1.table_name”具有授予权限的mysql用户,否则您将收到以下错误,

mysql> GRANT SELECT ON database1.table_name TO 'someuser'@'somehost';
ERROR 1142 (42000): GRANT command denied to user 'current_mysql_user'@'localhost' for table 'table_name'

有关mysql用户和数据库的详细信息位于“config / database.yml”

如果有效,请告诉我!

答案 1 :(得分:2)

如果您想编辑模型,可以:

class YourModel < ActiveRecord::Base
  attr_readonly :your_field_name
end

这不是迁移,但可能是最简单的方法。