我对Rails相当新,我只是想在页面上的sqlite3数据库中显示记录的user_id。这是我的代码:
class User < ActiveRecord::Base
set_primary_key :user_id
has_one :user_id
end
class HomeController < ApplicationController
def index
@users = User.find(0)
end
end
<%= User.users.user_id %>
我确定我犯了一个愚蠢的错误。
答案 0 :(得分:3)
如果你只想要一个用户对象的UID,那么让rails对你进行排序是相当标准的,所以你只需生成表所需的属性而不包括user_id。但是,你可能希望这个user_id在这种情况下忽略我刚才所说的内容。 你不需要has_one关系,除非你有另一个名为user_id的模型(我猜这是可能的)
索引方法通常用于返回所有用户,或者至少是一个子集(例如,如果使用分页),因此我建议在索引方法中使用以下内容
User.find :all
注意我已经关闭了括号,它没有什么区别,但它是一个rails约定(它使它看起来更像DSL)。
要返回1个用户,您可能需要这样的方法
# GET /posts/1
def show
@user = User.first
end
但约定规定id将由发送的url指定,因此它可能看起来更像是
# GET /posts/1
def show
@user = User.find params[:id]
end
如果您随后访问了一个类似于上面指定的方法的show方法(/ posts / 1,其中1是ID)
此方法的视图应如下所示:
<%= @user.user_id %>
注意@user是show方法传递给视图的成员变量,在这种情况下是id为1的用户的实例,并且您正在访问该实例的user_id属性,因此您不需要User.
因为这将调用类方法而不是用户对象实例的方法。
要回答您的具体问题,它应该更像
模型
class User < ActiveRecord::Base
set_primary_key :user_id
end
控制器
class HomeController < ApplicationController
def show
@user = User.first
end
end
使用/ users / 0
访问show视图视图将包含
<%= @user.user_id %>
编辑:
要显示登录的用户,您可能需要一个用户会话对象,该对象是在用户登录时创建的,并在用户注销时销毁。用户会话对象应具有关联的用户对象,然后您可以查询user_session对象以记录哪个用户。
我强烈建议使用authlogic,这很简单,可以知道最新情况但是这个技巧
答案 1 :(得分:2)
或者在您看来:
<% User.all.each do |user| %>
<%= user.id %>
<% end %>
这将打印出User
中所有记录的user_id答案 2 :(得分:0)
您确定User.find(0)
在这里吗? ID
不是以一个开头的吗?为了安全起见,请
@user = User.first
在视图中,您可以
<%= @user.user_id %>
答案 3 :(得分:0)
打印整个数据库使用;
Model.all
e.g
User.all