Ruby on rails 如何访问模型中的变量

Ruby on rails 如何访问模型中的变量,ruby-on-rails,Ruby On Rails,我正在尝试访问包含在我的用户对象中的属性。 我的用户模型有很多:post。在控制器中,我如何访问这些帖子?我会在模型中创建一个方法吗 def posts @posts = Post.find(User_id: params[:id]) end 或者我可以直接访问用户的帖子User.posts由于我当前居住在控制器中,控制器是否知道当前选择的型号?或者我必须再次提取信息吗?假设您在params中的id是您用户的id,您可以使用user=user.find(params[:id])获取用户,并

我正在尝试访问包含在我的用户对象中的属性。 我的用户模型
有很多:post
。在控制器中,我如何访问这些帖子?我会在模型中创建一个方法吗

def posts
  @posts = Post.find(User_id: params[:id])
end

或者我可以直接访问用户的帖子
User.posts
由于我当前居住在控制器中,控制器是否知道当前选择的型号?或者我必须再次提取信息吗?

假设您在params中的id是您用户的id,您可以使用
user=user.find(params[:id])
获取用户,并使用
@posts=user.posts
获取此用户的所有帖子。

假设您在params中的id是您用户的id,您可以使用
user=user.find(params[:id])
获取用户和
@posts=user.posts
获取此用户的所有帖子。

您可以查询数据库中具有特定用户id的所有帖子,如下所示:

@posts = Post.where(user_id: params[:id])
user = User.find(params[:id])
@posts = user.posts
posts = user.posts.where(:something => 'matches criteria')
或者,您可以先找到该用户,然后获取与该用户关联的所有帖子,如下所示:

@posts = Post.where(user_id: params[:id])
user = User.find(params[:id])
@posts = user.posts
posts = user.posts.where(:something => 'matches criteria')

您可以在数据库中查询具有特定用户id的所有帖子,如下所示:

@posts = Post.where(user_id: params[:id])
user = User.find(params[:id])
@posts = user.posts
posts = user.posts.where(:something => 'matches criteria')
或者,您可以先找到该用户,然后获取与该用户关联的所有帖子,如下所示:

@posts = Post.where(user_id: params[:id])
user = User.find(params[:id])
@posts = user.posts
posts = user.posts.where(:something => 'matches criteria')

所以,问题不在于你在哪里,而在于你在呼唤什么

我相信你对人际关系很熟悉

当你有关系时,这意味着你可以通过它们之间存在的任何关联从一个关系到另一个关系

如果我是我父亲的儿子,那么你可以通过检查我父亲的孩子直接找到我。(你不一定要先让村里所有的孩子都来)


所以,把我上面所有的故事放在一起,加上你的
Post
User
之间的关联,你可以随时调用
User.posts
User
User
的一个实例)和
Post.User
(其中
Post
Post
的一个实例)

,这不是你在哪里,而是你在呼唤什么

我相信你对人际关系很熟悉

当你有关系时,这意味着你可以通过它们之间存在的任何关联从一个关系到另一个关系

如果我是我父亲的儿子,那么你可以通过检查我父亲的孩子直接找到我。(你不一定要先让村里所有的孩子都来)


所以,把我上面所有的故事放在一起,通过你的
Post
User
之间的关联,你可以随时调用
User.posts
User
User
的一个实例)和
Post.User
(其中
Post
Post
的一个实例)

RubyonRails指南中有一个关于关联的部分,这正是您想要的。在这里:

简而言之,因为您已经将用户模型中的关联添加到许多post记录中,Rails将在您的用户模型中构建一个名为post的助手方法。您可以使用它访问与该用户关联的所有帖子

创建帖子时,帖子记录需要有一个名为user_id的列。这将在用户和帖子模型之间提供“物理”链接。您可以从用户处访问帖子,如下所示:

user.posts each do |post|
    # do something with post.content
end
要获取与posts集合中的某些条件匹配的帖子,可以按如下方式进行查询:

@posts = Post.where(user_id: params[:id])
user = User.find(params[:id])
@posts = user.posts
posts = user.posts.where(:something => 'matches criteria')
如果您知道只有一篇文章符合条件,您可以这样做:

post = user.posts.where(:something => 'matches criteria').first
post模型还需要一个属于:用户关联。(U将在post模型中生成一个名为user的助手方法,然后您可以使用该方法从post访问用户记录。)例如:

user_email = post.user.email
用户记录不需要post_id列,因为Rails知道user.post引用post表,并使用user_id自动生成查询


无论如何,我上面链接的指南将为您提供所需的所有信息以及更多信息。

RubyonRails指南中有一节介绍关联,这正是您想要的。在这里:

简而言之,因为您已经将用户模型中的关联添加到许多post记录中,Rails将在您的用户模型中构建一个名为post的助手方法。您可以使用它访问与该用户关联的所有帖子

创建帖子时,帖子记录需要有一个名为user_id的列。这将在用户和帖子模型之间提供“物理”链接。您可以从用户处访问帖子,如下所示:

user.posts each do |post|
    # do something with post.content
end
要获取与posts集合中的某些条件匹配的帖子,可以按如下方式进行查询:

@posts = Post.where(user_id: params[:id])
user = User.find(params[:id])
@posts = user.posts
posts = user.posts.where(:something => 'matches criteria')
如果您知道只有一篇文章符合条件,您可以这样做:

post = user.posts.where(:something => 'matches criteria').first
post模型还需要一个属于:用户关联。(U将在post模型中生成一个名为user的助手方法,然后您可以使用该方法从post访问用户记录。)例如:

user_email = post.user.email
用户记录不需要post_id列,因为Rails知道user.post引用post表,并使用user_id自动生成查询

无论如何,我上面链接的指南会给你所有你需要的信息,还有更多