0

面试问题:-

嗨,我是 Rails 的初学者。我去面试了,被问到以下问题:-

假设您有以下一组模型和关系

class Author < ActiveRecord::Base
   has_many :blogs
   # Properties:  name
end

class Blog << ActiveRecord::Base
  belongs_to :author
  has_one :image
  # Properties:  title, body
end

class Image << ActiveRecord::Base
  belongs_to :blog
  # Properties:  image_file_path
end

假设您要创建一个显示所有博客的表。该表的列是博客标题、作者姓名和博客图片。

编写一个 ActiveRecord 查询,该查询将拉取显示此表所需的@blogs 列表。你能做到这一点,以便在幕后no more then 3 SQL statements生成吗?不超过1个怎么样?

有人可以帮我弄这个吗?

4

2 回答 2

2

您可以使用以下查询来获取所有博客。

@blogs = Blog.find(:all, include: :project, include: :image)

在视图中..
@blogs.each 做 |blog|
blog.title
blog.author.name
blog.image.image_path

结尾

于 2013-03-28T05:19:27.230 回答
1

希望我正确理解了您的问题,但是要获取所有博客的列表,您只需执行以下操作:

@blogs = Blog.all

您可以在 Rails 控制台上尝试类似的操作,它会显示相应的 SQL 查询,这很简单

SELECT "blogs".* FROM "blogs"

Rails 网站上有一个指南,如果您想查看 Active Record 查询,请参阅:http: //guides.rubyonrails.org/active_record_querying.html#retrieving-multiple-objects

于 2013-03-28T05:08:56.620 回答