【发布时间】:2012-06-20 18:54:18
【问题描述】:
我希望创建一个只读表,我认为 MYSQL 权限是最好的方法。
这可以通过迁移实现吗?
【问题讨论】:
标签: mysql ruby-on-rails ruby migration
我希望创建一个只读表,我认为 MYSQL 权限是最好的方法。
这可以通过迁移实现吗?
【问题讨论】:
标签: mysql ruby-on-rails ruby migration
如下生成迁移文件,
rails g migration add_permissions_to_table_name
invoke active_record
create db/migrate/20120620191050_add_permissions_to_table_name.rb
如下编辑文件,
think@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”
如果可行,请告诉我!
【讨论】:
如果您想编辑模型,您可以:
class YourModel < ActiveRecord::Base
attr_readonly :your_field_name
end
这不是迁移,但可能是最简单的方法。
【讨论】: