2

読み取り専用テーブルを作成しようとしていますが、MYSQL アクセス許可がそれを行うための最良の方法だと思います。

これは移行によって可能ですか?

4

2 に答える 2

2

モデルを編集したい場合は、次のことができます。

class YourModel < ActiveRecord::Base
  attr_readonly :your_field_name
end

これは移行ではありませんが、おそらく最も簡単な方法です。

于 2012-06-20T19:28:47.650 に答える
2

次のように移行ファイルを生成します。

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」にあります。

これがうまくいくかどうか教えてください!

于 2012-06-20T19:24:44.047 に答える