2012-08-27 163 views
0

我想建立一個友誼系統sorta以下鏈接:How to Implement a Friendship Model in Rails 3 for a Social Networking Application?。然而,代碼似乎是非常過時的,我可能會改變它,我想要做的事情就是創建一個關係,但這似乎不起作用。Ruby on rails 3友誼

所以在這裏我創建

#Send a friendship request 
    def create 
    Friendship.request(@customer, @friend) 
    redirect_to friendships_path 
    end 

,然後會在技術上被稱爲位於其中他在以前的文章中已經實現模型的方法要求。

def self.request(customer, friend) 
    unless customer == friend or Friendship.exists?(customer, friend) 
     transaction do 
     create(:customer => customer, :friend => friend, :status => 'pending') 
     create(:customer => friend, :friend => customer, :status => 'requested') 
     end 
    end 
    end 

,我也添加了這些到然而友誼還沒有生成模型

attr_accessible :status, :customer_id, :friend_id, :customer, :friend 

。任何理由爲什麼不呢?我打電話關係如下

<%= link_to "Add friend", friendships_path(:friend_id => customer), :method => :post %> 
+0

我試着去實現一個友好的模型自己,我很困惑,我應該在attr_accessible被添加。我認爲地位應該是那裏的唯一屬性。沒有惡意用戶更改ID的風險,從而改變用戶之間的友誼嗎? – pratski

回答

0

您需要分開@customer和@friend。在您的鏈接中,您將設置:friend_id給客戶,而且您從不設置@customer ID。

試試這個:

def create 
    @customer = current_account 
    @friend = Account.find(params[:friend_id]) 
    Friendship.request(@customer, @friend) 
    redirect 
end 

在您需要的link_to:

<%= link_to "Add Friend", friendships_path(:friend_id => friend),: method => :post %>