【发布时间】:2017-06-01 14:35:06
【问题描述】:
在我的应用程序中,我有一个 WebsiteAd 模型和 website_ads 表,其中有我可以从我的管理员控制的所有网站广告。
目前在一个页面中,我对数据库中的每个广告进行 1 次查询,并在我的视图中查看广告是否为 active。
在我的控制器中:
# START - Desktop ads
def ads_desktop_tablet
@header_desktop_tablet = ad_placement('header_desktop-tablet')
@footer_desktop_tablet = ad_placement('footer_desktop-tablet')
@footer_desktop_tablet_c = ad_placement('footer_desktop-tablet_C')
@desktop_tablet_b1 = ad_placement('desktop-tablet_B1')
@desktop_tablet_b2 = ad_placement('desktop-tablet_B2')
@desktop_tablet_b3 = ad_placement('desktop-tablet_B3')
@desktop_tablet_s1 = ad_placement('desktop-tablet_S1')
@desktop_inline_banner = ad_placement('desktop_inline_banner')
@desktop_inline_video = ad_placement('desktop_inline_video')
@desktop_tablet_b2_c = ad_placement('desktop-tablet_B2_C')
@desktop_tablet_b3_c = ad_placement('desktop-tablet_B3_C')
@desktop_tablet_s1_c = ad_placement('desktop-tablet_S1_C')
@desktop_tablet_l1 = ad_placement('desktop-tablet_L1')
end
# END - Desktop ads
# START - Mobile ads
def ads_mobile
@header_mobile = ad_placement('header_mobile')
@footer_mobile = ad_placement('footer_mobile')
@mobile_b1 = ad_placement('mobile_B1')
@mobile_b2 = ad_placement('mobile_B2')
@mobile_b3 = ad_placement('mobile_B3')
@mobile_s1 = ad_placement('mobile_S1')
@mobile_inline_banner = ad_placement('mobile_inline_banner')
@mobile_b3_c = ad_placement('mobile_B3_C')
end
# END - Mobile ads
在我的助手中:
def ad_placement(placement)
WebsiteAd.where(placement: placement).first
end
# I have a method/`def` for each ad like below
def ad_desk_s1_active?
if desktop_tablet_s1.status == true
desktop_tablet_s1.ad_tag.html_safe
end
end
在我看来:
= ad_desk_s1_active?
我知道这不是一个好的做法和正确的做法。我怎样才能使这个更高效,更少的代码和数据库查询?
【问题讨论】:
标签: ruby-on-rails database ruby-on-rails-4 model controller