只是一个理论,不确定这在实际应用中如何运作:
创建models 命名为ActiveRecord 约定要求,例如对于表aaa_bbb_ccc_ddd,您将创建一个模型AaaBbb 并将此模型映射到您的表:
class AaaBbb < ActiveRecord::Base
self.table_name = "aaa_bbb_ccc_ddd"
end
或更人性化的例子:
class AdminUser < ActiveRecord::Base
self.table_name = "my_wonderfull_admin_users"
end
现在您将拥有 AaaBbb 作为路由中的资源,这意味着您将拥有如下网址:
.../aaa_bbb/...
如果你想在 url 中使用表名,我猜你可以重写路由:
get 'aaa_bbb_ccc_ddd/:id', "aaa_bbb#show", as: "aaa_bbb"
再说一遍,这只是一个可能对您有所帮助的理论。我还没有处理过此类案例,但会从这里开始。
编辑
自动从数据库创建模型:
https://github.com/bosko/rmre
但我认为这将通过 Rails 约定创建具有奇怪名称的模型,您必须将其用作应用程序中的资源。
我在 SO 上找到的一个很好的模板,以防您想使用与表名不同的模型名称:
class YourIdealModelName < ActiveRecord::Base
self.table_name = 'actual_table_name'
self.primary_key = 'ID'
belongs_to :other_ideal_model,
:foreign_key => 'foreign_key_on_other_table'
has_many :some_other_ideal_models,
:foreign_key => 'foreign_key_on_this_table',
:primary_key => 'primary_key_on_other_table'
end