我有2个型号:
class Video < ActiveRecord::Base
belongs_to :categories, :foreign_key => "category", :class_name => "Category"
end
class Category < ActiveRecord::Base
has_many :videos
end
到目前为止这很好,在我的索引页面的视频控制器中:
def index
@videos = Video.all(:joins => :categories)
etc, etc
end
以上产生以下SQL查询:SELECT videos
。* FROM videos
INNER JOIN categories
ON categories
。id = videos
。category
哪个到目前为止都很好,基本上我需要获取类别名称(该表中的一个字段),这样我就不必在视图中再做一次调用,根据类别id获取类别名称。有什么想法吗?
谢谢,是的,我是ruby的新手,我尝试阅读API,但在那里找不到多少帮助。
答案 0 :(得分:1)
如果认为Video
类中的关联设置不正确。它应该是:
class Video < ActiveRecord::Base
belongs_to :category
end
你可以@videos = Video.all(:include => :category)
。这将使用单个SQL语句检索视频和关联的类别记录。
顺便提一下,:class_name
关联上的belongs_to
选项是多余的,因为ActiveRecord已经从关联名称中自动推断出了类名。如果要使关联名称与基础类不同,则应仅使用此选项,例如作者/人。
答案 1 :(得分:0)
join_condition = " ,categories where INNER JOIN categories ON categories.id=videos.category"
@videos = Video.all(:joins => join_condition)
试试这个