Ruby on rails 查找某个外键记录的正确方法

Ruby on rails 查找某个外键记录的正确方法,ruby-on-rails,Ruby On Rails,我有两个模型叫做用户和成员。 用户拥有多个:会员资格 成员资格属于:用户 修改MembershipController的index方法以将@memberships设置为用户“session[:user_id]”的所有成员身份的正确方法是什么 我试过这样的方法: @memberships=memberships.find(:all,:conditions=>[“user\u id=?”,会话[:user\u id]] 但是Rails从用户而不是成员身份中进行选择: Rendering member

我有两个模型叫做用户和成员。 用户拥有多个:会员资格 成员资格属于:用户

修改MembershipController的index方法以将@memberships设置为用户“session[:user_id]”的所有成员身份的正确方法是什么

我试过这样的方法: @memberships=memberships.find(:all,:conditions=>[“user\u id=?”,会话[:user\u id]]

但是Rails从用户而不是成员身份中进行选择:

Rendering memberships/index
  ←[4;35;1mUser Columns (3.0ms)←[0m   ←[0mSHOW FIELDS FROM `users`←[0m
  ←[4;36;1mUser Load (1.0ms)←[0m   ←[0;1mSELECT * FROM `users` WHERE (`users`.`id` = 1) LIMIT
  ←[4;35;1mCACHE (0.0ms)←[0m   ←[0mSELECT * FROM `users` WHERE (`users`.`id` = 1) LIMIT 1←[0m

未正确设置用户id

脚本/控制台:

>> Membership.find(:first, :conditions => "user_id = 1")
=> nil
日志:


会话[:user\u id]
代表什么?您是否正在尝试使用自己的身份验证系统

有一种方法可以为你处理各种各样的问题

不过,要回答您的问题,您可能需要利用您在两个模型之间设置的:

def index
  @user = User.find(session[:user_id])
  @memberships = @user.memberships if @user
end
使用应用程序范围的身份验证系统(无论是您自己制作的还是使用库),这很可能简化为:

def index
  @memberships = current_user.memberships
end
其中,
current\u user
是在
ApplicationController
中定义的一种方法,它返回当前登录的用户,
索引
操作具有确保用户登录的方法

def index
  @memberships = current_user.memberships
end