我在用戶和孩子之間建立了一個簡單的HABM關係。HABTM搞砸了 - Rails 3
如果孩子屬於你,我希望你看到孩子和這個孩子對象所屬的其他用戶的名字。出於某種原因,我無法打印孩子所屬的其他用戶的姓名。
我選擇這樣:
@children = Child.all(:include => :users, :conditions => ["users.id = ? AND enrolled = ?", current_user.id, true])
,並嘗試打印這樣:
<% for user in child.users%>
<% if can? :manage, Child %>
<a rel='tipsy'><%= link_to '[#{user.first_and_last_name}]', edit_child_path(child), :title => "#{user.updateChoice}"%></a>
<%else%>
<a rel='tipsy'><%= link_to '[#{user.first_and_last_name}]', new_parentnote_path, :title => "#{user.updateChoice}"%></a>
<%end%>
<%end%>
它選擇合適的孩子,但不打印其他用戶的名稱。只有當前用戶的名字。
如果我選擇所有的孩子
Child.all一切都按預期工作。所有的名字都打印出來,告訴我這不是我的認證系統,做了些什麼可怕的事情,但其他的東西......可能是我選擇孩子的方式,雖然我嘗試了幾種方法=(
我不知道我是否真的錯過了一些東西很明顯,但這個已經困擾了我好幾個小時
任何幫助是極大的讚賞感謝
編輯 - 。添加模式
按照要求波紋管這裏是架構的關係,樹立優良的據我所知,它正在變得多樣化基於current_user的tiple用戶不會像上面解釋的那樣發生。 如果我使用上面的查詢,即使孩子有多個用戶(我通過做一個child.count看到它),它將僅打印當前用戶的名稱,因爲它沒有獲取該孩子所屬的其他用戶名稱好。
create_table "children_users", :id => false, :force => true do |t|
t.integer "child_id"
t.integer "user_id"
end
然後我有孩子。
create_table "children", :force => true do |t|
t.string "first_name"
t.string "last_name"
t.boolean "enrolled", :default => true
t.datetime "unenrolled_datetime"
end
和用戶
create_table "users", :force => true do |t|
t.string "email"
t.string "encrypted_password"
t.string "first_name"
t.string "last_name"
........ other stuff to reset password etc
end
的報價在你的'link_to'看起來不對 –
感謝您的緩存。這是一個問題,當我拿出DIV在這裏過去時,因爲這個div與這個問題無關。爲了清晰起見,請將div放回原處。 – Yuri