我在掌握两个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
请指导我绑定这些对象的正确方法。 感谢,并有一个愉快的一天!
答案 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
。