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