我练习我的RoR技能并尝试将应用程序开发到已创建的数据库。它有4个表: testplans , testplan_tcversions ,* test_project *和节点。
我为这个表编码了2个模型:
class TestPlan < ActiveRecord::Base
self.table_name= 'testplans'
belongs_to :test_project
has_many :test_suites, foreign_key: :testplan_id, inverse_of: :test_plan
has_one :node, foreign_key: :id, inverse_of: :test_plan
end
和
class TestSuite < ActiveRecord::Base
self.table_name='testplan_tcversions'
belongs_to :test_plan
has_one :node, foreign_key: id, inverse_of: :test_collection
end
但是在尝试时我得到异常未初始化的常量TestPlan :: TestSuite:@suits=TestPlan.find(4906).test_suites
我发现很多答案,模型必须是单数,表必须是复数,但我的模型名称是单数,表格的名称我指向self.table_name。
我做错了什么?
UPD
这是我的db:schema:dump
create_table "testplans", force: true do |t|
t.integer "testproject_id"
t.text "notes"
t.integer "active"
t.integer "is_open"
t.integer "is_public"
t.text "api_key"
end
create_table "testplan_tcversions", force: true do |t|
t.integer "testplan_id"
t.integer "tcversion_id"
t.integer "node_order"
t.integer "urgency"
t.integer "platform_id"
t.integer "author_id"
t.datetime "creation_ts"
end
答案 0 :(得分:0)
您的迁移是如何设置的?
如果设置正确,TestSuite和TestPlan之间的关系应如下所示:
class TestPlan < ActiveRecord::Base
has_many :test_suites
end
class TestSuite < ActiveRecord::Base
belongs_to :test_plan
end
为此,您的TestSuite迁移需要有一个test_plan_id列。这应该是这样的。
class TestSuite < ActiveRecord::Migration
belongs_to :test_plan
end
如果设置正确,您应该可以拨打@suits=TestPlan.find(4906).test_suites
。
确保您的表名与您的型号名称相对应。如果您没有名为“testplan_tcversions”的表,则该关联将不起作用。