在rails中的别名模型名称中出现问题

时间:2013-04-05 12:02:30

标签: ruby-on-rails ruby-on-rails-3 model-associations

我有两个模型UserDtype。 在users表中,我有两个名为dtype_iddtype_second的列,其中包含Dtype的ID。现在我需要通过关联获得两个列值。

使用@user.dtype.name会给我第一列的值(dtype_id)。

现在,我还需要第二列的值,即dtype_second

为此,我正在尝试这个:

In User Model:
belongs_to :dtype

In Dtype Model:
has_many :users
has_many :dtype_seconds, :foreign_key => 'dtype_second', :class_name => "User"

On view:
<%= @user.dtype_seconds.name %>

问题在于我没有得到任何价值或错误。

2 个答案:

答案 0 :(得分:2)

首先。命名。您应该将dtype_second字段重命名为dtype_second_id

下一步。协会。您需要在两个模型中适当地描述两种关联

class User
  belongs_to :dtype
  belongs_to :dtype_second, :class_name => 'Dtype'
end

class Dtype
  has_many :users
  has_many :second_users, :class_name => 'User', :foreign_key => 'dtype_second_id'
end

答案 1 :(得分:1)

您正在向dtype添加多个,但您尝试在用户上调用该方法。因此,您必须在用户上定义dtype_second关联:

class User < ActiveRecord::Base
  belongs_to :dtype
  belongs_to :dtype_alternative, :foreign_key => 'dtype_second', :class_name => "Dtype"

  ...
end

<%= @user.dtype_alternative.name %>