Rails中的Multipe关系,其中类名与关联名称不匹配

Arc*_*ath 0 activerecord ruby-on-rails

我有一个与两个用户相关的私人消息模型,如何设置关联,以便PM.sender是发件人的用户模型,PM.receiver是收件人的用户模型?(这样我就可以调用PM.sender.username等)

我有一个sender_id和receiver_id字段.

mik*_*kej 5

假设模型类,MessageUser在您的Message模型中:

class Message < ActiveRecord::Base
  belongs_to :sender, :class_name => 'User'
  belongs_to :receiver, :class_name => 'User'
end
Run Code Online (Sandbox Code Playgroud)

由于无法从关联名称推断出类名,因此:class_name需要使用explicit .

更新:刚刚检查过,:foreign_key只要外键的名称是后面的关联名称,就不需要该参数_id,在这种情况下就是这样.