我是 Rails 的新手,有一个任务要求我向任何用户发送邀请,让他们成为我杂志的管理员,这是我的一段代码
def invite
inviteUser = { 'user_id' => current_user.id, 'Magazine_id' => params[:id] }
CollaborationInvitation.create(inviteUser)
@magazine = Magazine.find(params[:id])
redirect_to :back
rescue ActionController::RedirectBackError
redirect_to root_path
end
我需要将 current_user.id
替换为指向我数据库中存在的任何用户 ID 的内容,以便向他发送邀请成为我的管理员 我尝试添加 @User= Users.All
,然后将其作为变量传递,但它给了我一个错误我尝试了很多东西,但每次我都遇到错误,除了添加
ps:我是用devise做认证
最佳答案
你问了一些事情,这有点让人困惑你想做什么。
这是获取模型中所有记录 ID 的方法。
Rails4: User.ids
Rails3: User.all.map(&:id)
或者(不确定 #pluck
是否在 Rails 3 中)
User.pluck(:id)
如果您想获得一个随机用户(您提到“任何用户”),您可以这样做。
User.find(User.pluck(:id).sample)
虽然我认为您真正想要做的是将用户的 ID 或其他一些属性作为参数传递给操作并向该用户发送邀请。
大概您有一个帖子或获取 "users#invite"
的路线(您在问题中写的操作)。您可以在那里添加一个命名参数,或者您可以传递一个 url 参数,或者如果您使用的是帖子路由,您可以将参数添加到帖子正文中。
然后在你的 Controller 中你可以做这样的事情(我将使用电子邮件作为属性):
def invite
@user = User.find_by(email: params[:user_email])
#Rails 3 like this
# @user = User.find_by_email(params[:user_email])
# now do stuff with user
end
关于ruby-on-rails - 获取数据库中存在的任何用户的任何id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006356/