与非id的列的一对一关系

时间:2013-08-13 12:25:13

标签: ruby-on-rails

我有BudgetLine模型。该模型有budget_item_id列。

第二个模型是BudgetItem。它有一个id和一列:full_name。

现在,我想调用:budget_line.item_name并获取与BudgetItem中的full_name相对应的名称。

我尝试过(在BudgetLine中):

has_one :item_name, :class_name => 'BudgetItem', :foreign_key => 'budget_item_id'

但它没有用。

2 个答案:

答案 0 :(得分:0)

由于您的外键位于BudgetLine模型中,因此您应该有belongs_to个关联:

belongs_to :item_name, class_name: 'BudgetItem', foreign_key: 'budget_item_id'

如果你想让方法只返回item_name,我建议重命名你的关联并添加单独的方法:

belongs_to :budget_item

def item_name
  budget_item.try(:full_name)
end

答案 1 :(得分:0)

而不是在BudgetLine中写作

has_one :item_name, :class_name => 'BudgetItem', :foreign_key => 'budget_item_id'

你应该写

belongs_to :item_name, :class_name => 'BudgetItem', :foreign_key => 'budget_item_id'