禁用Rails中数据库列的读写

时间:2015-05-14 16:32:39

标签: ruby-on-rails ruby-on-rails-4 activerecord database-migration

我想删除大表中的列,但首先我要禁用读取和写入该列。如果尝试其中任何一个,则应引发异常。

执行此操作的一种方法是覆盖可以读取或写入该列的所有方法。例如,如果表def name raise "posts.name column is disabled" end def name= raise "posts.name column is disabled" end def read_attribute(column) raise "posts.name column is disabled" if column.to_sym == :name super end def write_attribute(column) raise "posts.name column is disabled" if column.to_sym == :name end # Others??? 有一列var r = new Random(); return new String("1234567890".OrderBy(x => r.Next()).Take(4).ToArray()); ,我可以写

            List<int> digits = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            Random ran = new Random();
            string ranString = "";
            for(int i = 0; i < 4; i++)
            {
                int index = ran.Next(0, digits.Count);
                ranString += digits[index].ToString();
                digits.RemoveAt(index);
            }

但这很冗长,我怀疑它是否是可以访问该列的详尽方法列表。有没有更好的办法?我正在使用Rails 4.2。

0 个答案:

没有答案