在Ruby on Rails中获取关系n:m的对象

时间:2012-12-07 17:20:26

标签: ruby-on-rails ruby ruby-on-rails-3

我有两种模式:

  1. Perfiles
  2. Modulos
  3. 它们之间的关系是:多对多,有一个表映射关系:modulos_perfiles

    我需要获得属于“perfil”的所有“模数”..我有这个:

    <% @perfiles.each do |perfil| %>
        <% @m = perfil.modulo.last %>
        <%= @m.ruta %><br/>
    <% end %>
    

    但是我收到了这个错误:

      

    未定义方法“ruta”代表nil:NilClass

    其中“ruta”是“modulo”表的一列。

    我做到了:

    <% @perfiles.each do |perfil| %>
        <% @m = perfil.modulo.last %>
        <%= debug @m %><br/>
    <% end %>
    

    我可以看到@m对象的所有属性:

    红宝石/对象:模

    属性:

    • id:7
    • descripcion:Busquedas
    • ruta:/ busquedas
    • created_at:2012-11-25 02:23:51.984916000 Z
    • updated_at:2012-11-25 02:23:51.984916000 Z

    但我不明白为什么我不能用以下方法获得这个属性:

    <%= @m.ruta %>
    

    有什么想法吗?谢谢!

    更新

    我的模型类是:

    class Perfil < ActiveRecord::Base
        has_many :usuario
        has_and_belongs_to_many :modulo
    end
    
    class Modulo < ActiveRecord::Base
        has_and_belongs_to_many :perfiles
    end
    
    class ModulosPerfiles < ActiveRecord::Base
    end
    

    **

    ANSWER

    **

    我没有足够的声誉来发表答案。

    我已经解决了:

    我做到了:

    <% @perfiles.each do |perfil| %>
        <% perfil.modulo.each do |modulo| %>
            <%= modulo.ruta %><br/>
        <% end %>
    <% end %>
    

    所以我可以得到对象的任何属性“modulo”。

    感谢。

1 个答案:

答案 0 :(得分:0)

<% @perfiles.each do |perfil| %>
    <% perfil.modulo.each do |modulo| %>
        <%= modulo.ruta %><br/>
    <% end %>
<% end %>