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看来,当循环浏览我的所有网站时,我想显示EditDestroy按钮,但前提是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.

如果当前模式被认为不正确,则模型更改是可以接受的。

谢谢。

4

1 回答 1

1

利用,

Site.joins(:program).where('programs.user_id=?', current_user.id).includes(:programs).all
于 2013-03-03T14:01:20.397 回答