Rails没有访问字段值

时间:2016-02-02 10:48:18

标签: ruby-on-rails

模型

class Register < ActiveRecord::Base
attr_accessor   :code
belongs_to :user
end

class User < ActiveRecord::Base
has_many :register
end

控制器

def index
    @registers = Register.all
end

查看

 <p> All Registers </p>
 <table>
 <tr>
 <td> User </td>
 <td> Point </td>
 </tr>
 <% @registers.each do |u| %>
 <tr>
 <td> <%= u.user.name %> </td>
 <td> <%= u.hour %> </td>
 </tr>
 <% end %>
 </table>

它只显示Name而不是字段值 并且控制台正在给我这个错误

no such column: users.register_id: SELECT  "users".* FROM "users" WHERE "users"."register_id" = ? LIMIT 1

2 个答案:

答案 0 :(得分:2)

首先将user_id添加到寄存器表。

将索引操作更新为以下内容。

def index
    @registers = Register.all
end

并查看以下代码。

<% @registers.each do |u| %> 
  <%= u.user.name %> 
  <%= u.hour %>
<% end %>

将您的用户模型更新为以下。

class User < ActiveRecord::Base
  has_many :registers
end

答案 1 :(得分:0)

要添加到@Dheeresha的最佳答案,您还需要了解您实际上必须关联这两个对象。为此,您可以使用以下(作为测试):

$ rails c
$ user     = User.first
$ register = Register.first

$ user.registers << register

这将确保register集合中至少有一个user.registers。在生产/视图中确保这不是问题的方法是使用.try方法:

<% @registers.each do |u| %> 
  <%= u.user.try(:name) %> 
  <%= u.hour %>
<% end %>

您无法访问user对象的唯一原因是它与ActiveRecord中没有关联。这个问题本身可能是因为没有正确定义关联(如@Dheeresha所指出的),或者没有关联对象(正如我所提到的)。

-

您的模型应如下所示:

#app/models/user.rb
class User < ActiveRecord::Base
   has_many :registers
end

#app/models/register.rb
class Register < ActiveRecord::Base
   belongs_to :user
end