2013-05-31 73 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