2012-06-20 108 views

回答

2

生成一個遷移文件如下,

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

編輯文件如下,

認爲@ thinkComputer:〜/敏捷/ ajax1 $六分貝/ 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 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用戶和數據庫的細節位於「配置/ database.yml的」

請讓我知道,如果這をRKS!

+0

是否工作?.... – beck03076

+0

對於撤銷語法是從'someuser'@'somehost'不是至少在mysql – grossadamm

2

如果你想編輯您的模型,您可以:

class YourModel < ActiveRecord::Base 
    attr_readonly :your_field_name 
end 

這不是遷移,但可能是最簡單的方法。

+0

哦!我沒有考慮過肖恩。這是一個很好和簡單的!無論如何,我的答案會改變它在數據庫本身,你的想法。很好的答案! – beck03076

+0

難道仍然可以修改數據庫嗎?像,attr_readonly只是從內部。或者這是否真的在SQL表上設置了一些權限? – NullVoxPopuli

相關問題