所以我的应用程序中有3个模型,由HABTM关系连接:
class Member < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :software_instances
end
class SoftwareInstance < ActiveRecord::Base
end
我有适当的连接表,并使用foxy灯具加载它们:
- members.yml -
rick:
name: Rick
groups: cals
- groups.yml -
cals:
name: CALS
software_instances: delphi
- software_instances.yml -
delphi:
name: No, this is not a joke, someone in our group is still maintaining Delphi apps...
我做了rake db:fixtures:load
,然后检查表格。是的,连接表groups_members和groups_software_instances具有适当的ID,通过散列夹具名称生成大数字。耶!
如果我运行脚本/控制台,我可以查看rick的组,看看那里有cals,或者cals的software_instances和delphi出现了。 (同样德尔福知道它是在小组中的。)耶!
但是如果我看一下rick.groups[0].software_instances
... nada。 []。奇怪的是,rick.groups[0].id
类似于30或10,而不是398398439。
我已经尝试过更换灯具中定义关联的位置,例如
- members.yml -
rick:
name: rick
- groups.yml -
cals:
name: CALS
members: rick
没有错误,但结果相同。
(后来:确认,在MySQL上的行为相同。事实上,如果我把foxification拿出来并使用ERB直接创建连接表,我会得到同样的东西,所以:
- license_groups_software_instances -
cals_delphi:
group_id: <%= Fixtures.identify 'cals' %>
software_instance_id: <%= Fixtures.identify 'delphi' $>
(后来仍然:GAAA,它甚至比这更糟!如果我构建一个针对数据库的查询,所有挂钩,但如果我运行脚本/控制台或单元测试,第二跳如上所述,关联链被破坏了。所以也许它与固定装置无关。)
在我把它扔掉之前,拒绝狡猾的装置和所有在她身上航行的人只需手动编码ID ......任何人都有一个建议,为什么会发生这种情况?我目前正在使用sqlite3在Rails 2.3.2中工作,这种情况发生在OS X和Ubuntu上(而且我认为也使用MySQL)。
TIA,我的竞争对手。