我正在使用dwilkie的foreigner插件用于rails。我有一个表创建语句,如下所示:
create_table "agents_games", :force => true, :id => false do |t|
t.references :agents, :column => :agent_id, :foreign_key => true, :null => false
t.references :games, :column => :game_id, :foreign_key => true, :null => false
end
但是,这会生成以下SQL:
[4;35;1mSQL (2.7ms)[0m [0mCREATE TABLE "agents_games" ("agents_id" integer NOT NULL, "games_id" integer NOT NULL) [0m
我希望将列称为agent_id
和game_id
- 而不是agents_id
和games_id
。如何防止Rails复数列?
我在我的enviornment.rb
文件中尝试了以下操作,但没有帮助:
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable "agent_id", "game_id"
end
答案 0 :(得分:2)
一般来说,不要与ActiveRecord的惯例作斗争,这是使AR工作得如此之好的部分原因。但是,如果对于这个一个案例你想要做一个例外,通过你的environment.rb中的一些代码很容易,请查看http://api.rubyonrails.org/classes/Inflector/Inflections.html作为例子。
答案 1 :(得分:2)
找到我的问题的解决方案。我不得不像引用那样单独声明外键:
create_table "agents_games", :force => true, :id => false do |t|
t.references :agent
t.foreign_key :agents, :column => :agent_id, :null => false
t.references :game
t.foreign_key :games, :column => :game_id, :null => false
end
有了这个,我可以拿出Inflector的东西。