0
我有相关的这样三个对象:预先加载多个关联
class Site < ActiveRecord::Base
belongs_to :program
end
class Program < ActiveRecord::Base
belongs_to :user
has_many :sites
end
class User < ActiveRecord::Base
has_many :programs
end
在我Sites index
视图,通过我所有的网站我想displiay Edit
和Destroy
按钮的循环时,但前提是current_user
拥有该网站:
- if current_user == site.program.user || current_user.try(:admin?)
= icon_link_to "edit", 'Edit', edit_program_site_path(site.program, site), :class => "btn btn-primary"
= icon_link_to "trash", "Delete", site, confirm: 'Are you sure?', method: :delete, class: 'btn btn-danger'
此代码失败,因为程序和用户对象为零。
我知道,在我的控制,我需要像下面这样:
@sites = Site.includes(:programs).all
这将解决访问site.program
的问题,但是我不知道我怎么还可以包括user
。
如果当前模式被认为是不正确的,模型更改是可以接受的。
谢谢。
很好的回答。我开始使用'Site.joins(:program =>:user).page(params [:page])',但是当我只需要当前的用户时,这会提取每个用户。不过,我也需要向其他用户展示网站。 – Ash 2013-03-03 15:13:52