1

我創建了一個帶有用戶身份驗證的簡單Web應用程序。我製作了兩個模型:Users用於用戶認證,Details用於其他用戶詳細信息。他們與one-to-one關係有關。我在更新來自同一控制器的兩個模型時遇到問題。Rails:一對一關係的兩個模型,一個控制器

one-to-one協會建議在這種情況下(我不願意在一個表中推送太多領域),如果是這樣,通過一個控制器處理兩個模型的正確方法是什麼?

回答

3

檢查Nested Model Form Part 1/2通過鐵路鑄造。檢查軌道投下來,你一定能弄清楚:)它解釋了許多關係,微小的推特,你可以做到一對一。

你可能希望看到一些示例代碼:

class Wiki < ActiveRecord::Base 
    has_many :revisions 

    has_one :latest_revision, :class_name => "Revision", :order => 'updated_at desc', :limit => 1 
    accepts_nested_attributes_for :revisions 
end 

class Revision < ActiveRecord::Base 
    belongs_to :wiki 
end 


# new Wiki page, first revision 
def new 
    @wiki = Wiki.new 
    @revision = @wiki.revisions.build 
end 

def create 
    @wiki=Wiki.new(params[:wiki]) 
    @wiki.save 
end 

# adding a Revision to a Wiki page 
def edit 
    @wiki = Wiki.find(params[:id]) 
    @revision = @wiki.revisions.build # creating a new revision on edit 
end 

def update 
    @wiki=Wiki.new(params[:wiki]) 
    @wiki.save 
end 

def show 
    @wiki = Wiki.find(params[:id]) 
    @revision = @wiki.latest_revision 
end 
+0

我忘了補充說我已經看到了RailsCasts的兩個部分,我不知道它是否適合我的情況。但是,謝謝! (在我問= D之前,我總是搜索RailsCasts) – aL3xa 2012-03-19 23:28:42

+0

好的,就是這樣。爲我解決,謝謝! =) – aL3xa 2012-03-19 23:31:32

-1

是採用一對一我們有道理的,因爲你用來堆放雜物條塊說。在從控制器訪問它們時,只要您已在模型中正確定義關聯,就應該可以執行此操作。

用戶模型必須具備:

has_one : detail 

和詳細的模型必須具備:

belongs_to : user 

那麼如果你在「詳細信息」表稱爲「user_ID的」外鍵,一切應該工作正常。

現在你可以使用對方喜歡

User.find(1).detail 

Detail.find(1).user 

你現在可以同時更新在從他們的控制器以同樣的方式訪問這兩個車型。

相關問題