2013-05-31 74 views
0

我是Ruby on Rails的新手。Ruby on Rails:ActiveRecord协会

我看了一些教程,知道如何创建基本的关系。但我不能申请我的案子。

我有2个型号的样子

class User < ActiveRecord::Base 
    attr_accessible :email, :created_user, :updated_user 
    has_many :reports 
end 

class Report < ActiveRecord::Base 
    attr_accessible :content, :user_id, :title, :updated_user 
    belongs_to :user 
end 

现在我可以这样写:

report.user 

但我想写出头更

report.updated_user // instead of User.find(report[:updated_user]) 
user.created_user // instead of User.find(user[:created_user]) 
user.updated_user // instead of User.find(user[:updated_user]) 

我该怎么办?

回答

1

更改您的报告模式,这一点:

class Report < ActiveRecord::Base 
    attr_accessible :content, :user_id, :title, :updated_user 
    belongs_to :user, :class_name => "User", :foreign_key => 'user_id' 
    belongs_to :updated_user, :class_name => "User", :foreign_key => 'updated_user' 
end 
+0

确保在迁移文件添加这些外键,即刷新DB –

+0

谢谢你了。还有一件事,这种方式比我使用User.find(报告[:updated_user])运行得更快吗? –

+0

它可能不会产生巨大的差异,但这绝对是更干净的语法! – Jeroen

0

尝试这样

@report=report.find(id) 
@report.user.updated_user