在Rails3中指定模型属性的列?

时间:2012-10-15 03:44:22

标签: ruby ruby-on-rails-3

是否可以为属性指定列?我有类似的东西:

NAME, COUNTRY

数据库非常庞大,我有超过一千列像这样大写。我想这样说:

attr_accessible :name, :country

其中:name =列名称。我更喜欢Model.name而不是Model.NAME。无法对结构文件中的每个列名称进行缩写。

2 个答案:

答案 0 :(得分:1)

这是一个按照你喜欢的方式做主意的想法。

生成迁移的命令:
(在我的示例中,我将此应用于Posts表。根据您的表名更改

rails g migrate RenameColumnsOfPosts

以下是迁移up方法。这里列出了所有列名称,并且我正在应用rename_column使其成为小写。

class RenameColumnsOfPosts < ActiveRecord::Migration
  def up
     Post.columns.map(&:name).each do |column_name|
        rename_column(:posts, column_name, column_name.downcase)
     end
  end

  def down
     #You can do the opposite operation here. Leaving on you
  end
end

由于我没有亲自运行,可能需要进行一些更改。所以从它开始,让我知道是否面临任何问题。

答案 1 :(得分:0)

Please write code inside of  model ,
it's just for demostration code,after you get it and update as per logic :

This Code inside of model :
...
attr_accessor :name,:country
before_save :fill_save
..
#assign variable like ...
 def fill_save
       self.NAME=  self.name
       self.COUNTRY=  self.country
  end
....