我在用户和孩子之间建立了一个简单的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