Rails夹具似乎不支持传递关联

时间:2011-01-07 18:20:28

标签: ruby-on-rails activerecord associations

所以我的应用程序中有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,我的竞争对手。

0 个答案:

没有答案