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
...这会向已登录的用户发送电子邮件(但这不是我想要的)。
提前致谢,
马特
答案 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