2012-12-12 28 views
1

我有兩個模型,用戶和俱樂部。用戶可以創建一個俱樂部,然後添加成員到俱樂部。爲了實現這樣的,我有叫會員連接表,因爲這樣的:保存加入無外鍵項目

class Membership < ActiveRecord::Base 

    attr_accessible :member_id, :club_id, :name, :email 

    belongs_to :club 
    belongs_to :member, class_name: "User" 

    validates :club_id, presence: true 

end 

要創建一個成員,我有一個要求一個俱樂部成員的姓名和電子郵件形式,並且還通過了:club_id通過一個隱藏的領域。

<%= form_for(@club.memberships.create(:club_id => @club.id)) do |f| %> 
    <%= f.hidden_field :club_id %> 
    <div class="field"> 
    <%= f.text_field :name, placeholder: "Name" %> 
    </div> 
    <div class="field"> 
    <%= f.text_field :email, placeholder: "Email" %> 
    </div> 
    <div class="action"> 
    <%= f.submit "Add", class: "btn" %> 
    </div> 
<% end %> 

的:電子郵件被髮送到控制器,以查找該用戶的ID並創建一個籍着:club_id和:member_id,以及用戶名鏈接到他們的個人資料放在俱樂部的網頁上。如果電子郵件地址已經與用戶關聯,則一切正常。

控制器:

def create 
    @club = Club.find(params[:membership][:club_id]) 
    unless User.find_by_email(params[:membership][:email]).id.nil? 
    params[:membership][:member_id] = User.find_by_email(params[:membership][:email]).id 
    @club.memberships.create(params[:membership]) 
    flash[:success] = "Club member successfully added" 
    redirect_to :back 
    else 
    @club.memberships.create(params[:membership])  ##<-- This is where I need help 
    redirect_to :back 
    end 
end 

如果沒有與電子郵件相關的用戶,然而,查找返回零,符合市場預期。我想知道如何才能讓這個成員資格保存只有名稱和否:member_id。我希望它仍然能夠在俱樂部頁面上顯示該俱樂部會員的姓名,但顯然沒有鏈接到他們的個人資料。然後,可以使用電子郵件向他們發送一條消息,指示某人表示他是我網站上的某個俱樂部的成員,但主要是我只想讓他們的姓名仍顯示在該俱樂部的頁面上。

謝謝。

回答

1

爲什麼你不只是創建一個新的電子郵件用戶?然後,所有零和顯示的東西都可以解決。保持當前結構的最簡單方法。