0

と の 2 つのモデルがUserありDtypeます。usersテーブルには、Dtype の ID を含む と という名前の 2 つの列がありますdtype_iddtype_secondここで、関連付けを通じて両方の列の値を取得する必要があります。

を使用@user.dtype.nameすると、最初の列 (dtype_id) の値が得られます。

ここで、2 列目の値も必要です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 %>

問題は、値やエラーが得られないことです。

4

2 に答える 2

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
于 2013-04-05T12:19:43.263 に答える
1

has many を に追加して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 %>
于 2013-04-05T12:20:03.683 に答える