gpt4 book ai didi

namespaces - 在命名空间模型中设置表名

转载 作者:行者123 更新时间:2023-12-04 05:31:13 25 4
gpt4 key购买 nike

我有一些命名空间模型,我正在尝试为它们覆盖默认的 rails 表名,因为我正在连接到现有的旧数据库。

我的模型是:

/app/models/licenses.rb

  module Licenses
def self.table_name_prefix
''
end
end

/app/models/licenses/employee.rb
class Licenses::Employee < ActiveRecord::Base
establish_connection YAML::load(File.open("#{Rails.root}/config/licenses_database.yml"))[Rails.env]
self.table_name = 'EMPLOYEE'
self.primary_key = 'EMPLOYEE_ID'
end

/app/models/licenses/inspection.rb
class Licenses::Inspection < ActiveRecord::Base
establish_connection YAML::load(File.open("#{Rails.root}/config/licenses_database.yml"))[Rails.env]
self.table_name = 'INSPECTION'
self.primary_key = 'INSPECTION_ID'
end

当我运行测试时,会生成错误

PG::Error: ERROR: relation "licenses_employees" does not exist



从命名空间模型中删除前缀是否缺少一些东西?

更新:我尝试将许可证模块中的表名前缀设置为“testing_”而不是“”,但我仍然收到相同的错误消息。

最佳答案

手头的问题似乎是我使用 rails 生成器为现有数据库创建命名空间模型。生成器已将夹具文件创建为命名空间夹具,即 /test/fixtures/licenses/employees.yml .当我尝试运行测试时,Rails 会尝试根据夹具名称/路径将夹具插入表中。我只需要移动现有数据库的夹具文件并重命名它们以匹配我在模型中设置的表名,即 /test/fixtures/licenses/employee.yml .

关于namespaces - 在命名空间模型中设置表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12608509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com