如何解决Rails-从关系中获取属性的麻烦
| 这些是我的模型: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,:foreign_key => \"honored_id\"
belongs_to :group,:class_name => \'Group\',:foreign_key => \"group_id\"
由于person#show
页面上显示了honors
,因此这是我的控制器:
def show
...
@honors = @person.honors.paginate(:page => params[:page],:per_page => Honor.per_page)
end
我的看法是:
<% unless @honors.empty? %>
<% @honors.each do |ho| %>
我的问题是:使用ѭ5可以获取ѭ6的所有属性,但是我想获得荣誉的创建者及其所属的组。我怎样才能做到这一点?
谢谢!
解决方法
您可以通过访问
ho.person
要么
ho.group
,注意:
belongs_to :group,:class_name => \'Group\',:foreign_key => \"group_id\"
和
belongs_to :group
会做同样的事情,因为当您给它“ 11”时,Rails会假定该类和外键。
为了使ѭ12正常工作(如果我假设正确),您需要:
class Person < Model
has_many :honors,:foreign_key => :creator_id
end
class Honor < Model
belongs_to :creator,:class_name => \"Person\"
end
这样,您可以设置honor.creator_id = params[:user_id]
,然后使用ho.creator
访问此人。
换句话说,我会像这样重做您的模型:
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
我重命名了一些专栏,希望能更好地理解它,这是我的首要任务,因此,我将参考一些参考资料以确保准确性。
这将使您可以访问honor.creator
和honor.group
。
<% @honors.each do |honor| %>
Honor Creator: <%= honor.creator.name %>
Honor Group: <%= honor.group.name %>
Honor Recipients: <% honor.recipients.each {|recipient| puts recipient} %>
<% end %>
可能搞砸了收件人关联,但是我去看看。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。