読み取り専用テーブルを作成しようとしていますが、MYSQL アクセス許可がそれを行うための最良の方法だと思います。
これは移行によって可能ですか?
読み取り専用テーブルを作成しようとしていますが、MYSQL アクセス許可がそれを行うための最良の方法だと思います。
これは移行によって可能ですか?
モデルを編集したい場合は、次のことができます。
class YourModel < ActiveRecord::Base
attr_readonly :your_field_name
end
これは移行ではありませんが、おそらく最も簡単な方法です。
次のように移行ファイルを生成します。
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」にあります。
これがうまくいくかどうか教えてください!