Ruby on rails activerecord json输出未在输出中显示关系
我有一个posts模型,当然还有作者,这对我的用户来说是一个外键关系 我试图用JSON输出带有作者姓名的帖子。 我知道这是rails 101,但我不能调用Ruby on rails activerecord json输出未在输出中显示关系,ruby-on-rails,Ruby On Rails,我有一个posts模型,当然还有作者,这对我的用户来说是一个外键关系 我试图用JSON输出带有作者姓名的帖子。 我知道这是rails 101,但我不能调用post.author,因为我不在视图中 我试过几种方法,但似乎都不管用 我的后模型 belongs_to :user, :foreign_key => :author_id def post_author self.each {|a| a['author'] = User.find(a.id)} end 属于:用户,:外键=>:autho
post.author
,因为我不在视图中
我试过几种方法,但似乎都不管用
我的后模型
belongs_to :user, :foreign_key => :author_id
def post_author
self.each {|a| a['author'] = User.find(a.id)}
end
属于:用户,:外键=>:author\u id
def post_作者
self.each{a|a['author']=User.find(a.id)}
结束
在我的控制器中,我尝试了各种
posts=Post.find(:all).includes(:user)
#or
posts=Post.find(:all).includes(:post_author) #don't think this is right anyway, but tried
#and
posts = Post.find(:all)
posts = JSON::Parse(posts.to_json()).merge('author'=>posts.author) #or posts.user, etc etc
posts=Post.find(:all).includes(:user)
#或
posts=Post.find(:all).includes(:Post_author)#无论如何,不要认为这是正确的,但是尝试过了
#及
posts=Post.find(:all)
posts=JSON::Parse(posts.to_JSON()).merge('author'=>posts.author)#或posts.user等
当然,这些都不起作用,这就是我在这里发帖的原因。获得帖子作者的最佳方式是什么
----------------------更新---------------------------
@rjz提供了一个有效的回应,但我希望这不是最好的方式。
他建议使用
posts.to_json(:include=> :user,:only[:username])
posts.to_json(:include=>:user,:only[:username])
这意味着我只想找回用户名,但我需要更多,所以我开始使用
:除了。这里的问题是,我有一个类似id
的字段,这是我在帖子中需要的,但在作者中不需要,但如果我以这种方式排除它们,该字段将完全从结果中排除。我还必须列出我需要的每个领域,我不确定这是否是最好的方法 您可能需要稍微梳理一下您的关联名称,以获得您想要的确切内容,但您要查找的是:在序列化时包含选项:
这让我得到了user@rjz,但带来了一个新问题,即现在返回所有内容,包括电子邮件等。我尝试了posts.to_json(:include=>:user,:select=>:username)
,但没有成功。我可以将select与此混合使用吗?不完全可以,但是您可以使用to_json
中的:only
选项来限制哪些字段被序列化。这在我上面链接的文档中有详细说明。谢谢rjz,这是一个确定的解决方案。我现在使用的是:除了,但我必须删除或添加两个表的所有字段。我希望有更好的方法,我会更新这个问题。如果没有更好的回答,答案是你的。再次感谢
posts.to_json(:include => :user)