次のように関連する 3 つのオブジェクトがあります。
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
見解では、すべてのサイトをループするときに、表示したいボタン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'
プログラム オブジェクトとユーザー オブジェクトが nil であるため、このコードは失敗します。
私のコントローラーでは、次のようなものが必要であることを知っています。
@sites = Site.includes(:programs).all
これで へのアクセスの問題は解決しsite.program
ますが、user
.
現在のスキーマが正しくないと見なされる場合、モデルの変更は受け入れられます。
ありがとう。