在rails上的ruby中查找User对象

时间:2011-08-03 22:23:03

标签: ruby-on-rails database

Ruby on rails noob here。

与此问题相关的用户字段:id(prim.key)。发布与此问题相关的字段:id,user_id(fk)。外键是Posts的user_id,它连接到Users的id。以下是正确的语法吗?我想抓住发布当前帖子的User对象: (这是在controllers / posts_controller.rb中)

@id = Post.find(params[:id]).user_id 
@user = User.find(@id)

您可以在下面看到代码的上下文:

def sendMessage
  #@user = current_user
  @id = Post.find(params[:id]).user_id 
  @user = User.find(@id)
  UserMailer.welcome_email(@user).deliver
  respond_to do |format|
      format.html { render :nothing => true, :status => :ok }
  end
end

我问的原因是因为没有将电子邮件发送给创建帖子的用户。现在,我知道这不是一个电子邮件问题,因为作为一个测试,我试着评论这两行,并简单地使用:

@user = current_user

...这会向已登录的用户发送电子邮件(但这不是我想要的)。

提前致谢,

马特

2 个答案:

答案 0 :(得分:3)

您应该按照以下方式设置模型:

class Post < ActiveRecord::Base

  belongs_to :user

end

class User < ActiveRecord::Base

  has_many :posts

end

然后在你的控制器中你可以这样做:

@post = Post.find(params[:id])
@user = @post.user

答案 1 :(得分:1)

您应该在模型中设置正确的关系。

我想用户中的'has_many:posts'和帖子中的'belongs_to:user'。

然后你就能做到:

@user = Post.find(params[:id]).user