我有一个帖子模型,当然还有作者,这是与我的用户的外键关系。
我正在尝试输出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
在我的控制器中我尝试了各种各样的
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
当然,这些都没有奏效,这就是我在这里发帖的原因。获取帖子作者的最佳方式是什么?
---------------------- update ------------------------ ---
@rjz提供了一个有效的回复,但我希望这不是最好的方法。 他建议使用
posts.to_json(:include=> :user,:only[:username])
这意味着我只回来了用户名,但我还需要更多用户名,所以我开始使用:except
代替。这里的问题是我有一个像id
这样的字段,我需要在帖子中,但不是在作者中,但如果我以这种方式排除它们,那么该字段将被完全排除在结果之外。我还必须列出我需要的每个领域,我不确定这是否是最好的方法。
答案 0 :(得分:1)
您可能需要稍微取一下您的关联名称以获得您想要的内容,但是当您使用to_json
序列化时,您要查找的是:include
选项:
posts.to_json(:include => :user)