rails 到底怎么关联两张表

rails 到底如何关联两张表
1表quest_enemy 2表base_enemy
  id |---------> base_id
  base_id-------- base_name
  name
如示例中两张表。

我在quest_enemy的模型中用了has_one base_enemy
在base_enemy的模型中用了belongs_to quest_enemy
然后我想显示quest_enemy 中的id,name 和base_enemy 中所对应的base_name

怎么也搞不定。我这样调用 @quest_enemy.base_enemy.base_name 总是说没有定义base_name这个函数。

麻烦仔细看看。


------解决方案--------------------
base_enemy
 belongs_to :quest_enemy
quest_enemy
 has_one :base_enemy

@quest_enemy.base_enemy.base_name就可以了
------解决方案--------------------
lz ,has_one表设计是从表有一个对应主表的id就行了。

这样设计 :
================================
1表 2表
quest_enemy base_enemy
id <==> quest_enemy_id
name base_name

model
==========================
quest_enemy
has_one :base_enemy

base_enemy
belongs_to :quest_enemy

action:
==========================
quest_enemy = QuestEnemy.find(:first)
quest_enemy.base_enemy.base_name
------解决方案--------------------
你的主从关系搞反了。
是在从表中,它的关联名一定是:主表名+"_id"

在rails里数据表的关联名是有规定的!
------解决方案--------------------
rails有自己建表的功能,也就是说用rails来建表或修改表结构,这样对于每个表它都会给你自动加"id"项名。

若是你自己用其它方式建好表,又没有遵循rails的规定,那么rails表链接的关联存取方式就不能用,只能用SQL语句来解决问题了。

你可以看看rails的规定,规定的很死,如多关联还必须要用复数形式(加后缀s)等...
------解决方案--------------------
如果你不想用rails 的规则可以这样写

has_one :base_enemy , :foreign_key => "base_id"

belongs_to :quest_enemy, :foreign_key => "base_id"