Ruby on rails Rails-从关系中获取属性时遇到的问题

Ruby on rails Rails-从关系中获取属性时遇到的问题,ruby-on-rails,ruby-on-rails-3,view,Ruby On Rails,Ruby On Rails 3,View,这些是我的模型: class Person < ActiveRecord::Base has_many :honors, :dependent => :destroy, :foreign_key => "honored_id" has_many :honor_creators, :through => :honors, :source => :person, :foreign_key => "person_id" class Group has

这些是我的模型:

class Person < ActiveRecord::Base
  has_many :honors, :dependent => :destroy, :foreign_key => "honored_id"
  has_many :honor_creators, :through => :honors, :source => :person, :foreign_key => "person_id"

class Group 
  has_many :honorss,:foreign_key => "group_id"

class Honor
  belongs_to :person, :class_name => 'Person', :foreign_key => "person_id"
  belongs_to :honored, :class_name => 'Person', :foreign_key => "honored_id"
  belongs_to :group, :class_name => 'Group', :foreign_key => "group_id"
我的看法是:

<% unless @honors.empty? %>
<% @honors.each do |ho| %>

我的问题是:使用
ho
我从
荣誉
中获取所有属性,但我想获取荣誉的创建者及其所属的组。我该怎么做


谢谢

您可以通过访问

ho.person


注意:

belongs_to :group, :class_name => 'Group', :foreign_key => "group_id"

将做同样的事情,因为当您给它
:group
时,Rails将假定该类和外键

要让
ho.honour\u creator
工作(如果我假设正确的话),您需要:

class Person < Model
  has_many :honors, :foreign_key => :creator_id
end

class Honor < Model
  belongs_to :creator, :class_name => "Person"
end
class Person < ActiveRecord::Base
  belongs_to :honor, :foreign_key => :recipient_id
  has_many :honors, :foreign_key => :creator_id

class Group 
  has_many :honors

class Honor
  has_many :recipients, :class_name => 'Person' # recipient_id is assumed
  belongs_to :creator, :class_name => 'Person' # creator_id is assumed
  belongs_to :group # group_id is assumed
我重新命名了一些专栏,希望能有更好的意义,这是我从头开始做的,所以我将查看一些参考资料以确保我的准确性

这将允许您访问
荣誉.creator
荣誉.group

<% @honors.each do |honor| %>
  Honor Creator: <%= honor.creator.name %>
  Honor Group: <%= honor.group.name %>
  Honor Recipients: <% honor.recipients.each {|recipient| puts recipient} %>
<% end %>

荣誉创造者:
荣誉团体:
获奖者:
可能弄乱了收件人协会,但我会去看看

class Person < Model
  has_many :honors, :foreign_key => :creator_id
end

class Honor < Model
  belongs_to :creator, :class_name => "Person"
end
class Person < ActiveRecord::Base
  belongs_to :honor, :foreign_key => :recipient_id
  has_many :honors, :foreign_key => :creator_id

class Group 
  has_many :honors

class Honor
  has_many :recipients, :class_name => 'Person' # recipient_id is assumed
  belongs_to :creator, :class_name => 'Person' # creator_id is assumed
  belongs_to :group # group_id is assumed
<% @honors.each do |honor| %>
  Honor Creator: <%= honor.creator.name %>
  Honor Group: <%= honor.group.name %>
  Honor Recipients: <% honor.recipients.each {|recipient| puts recipient} %>
<% end %>