Rails对象为belongs_to和has_one

时间:2016-05-23 23:01:36

标签: ruby-on-rails activerecord

我在掌握两个Rails / ActiveRecord类之间的正确关系方面遇到了麻烦。

我有一个用户,可以创建一个Slip并同时成为另一个单据的收件人。每个用户可以创建任意数量的单据,但只有一个用户作为给定单据的收件人。

从db的角度来看,我有两个用于' user_id'的整数(键)列。 (作者)和'收件人'在slips表中并且没有对users表的引用。

这是我目前无法正常运作的方法:

class User < ApplicationRecord
  has_many :slips
  belongs_to :slips, :foreign_key => 'addressee'
end

class Slip < ApplicationRecord
  belongs_to :user
  has_one :addressee, :through => :user
end

请指导我绑定这些对象的正确方法。 感谢,并有一个愉快的一天!

2 个答案:

答案 0 :(得分:1)

它应该看起来像这样(第二个可能只是被称为'滑'但我称之为'addressor_slip'以避免混淆):

class User < ApplicationRecord
  has_many :slips
  has_one :addressor_slip, :class_name=> 'Slip', :foreign_key => 'addressee'
end

class Slip < ApplicationRecord
  belongs_to :user
  belongs_to :addressee, :class_name=> 'User', :foreign_key => 'addressee'
end

您还可以通过以下方式创建从用户到用户的关联:addressor_slip

答案 1 :(得分:0)

在此处查看many to many关系:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

您可能正在寻找has_and_belongs_to_many