模型
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
答案 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