我正在寻找创建一个只读表,我认为MYSQL权限是最好的方法。
这是否可以通过迁移实现?
答案 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
这不是迁移,但可能是最简单的方法。