我尝试根据教程在用户和广告之间建立关系。 为此,我将代码分为两个控制器:用户,广告,ads_subscriber和等效模型。我收到空数组的问题。
让我们假设一个逻辑:
user -have - list of ads.
ad - have - list of users.
模型/广告
class Ad < ActiveRecord::Base
has_many :reverse_ads_subscribers, foreign_key: "subscriber_id",
class_name: "AdsSubscriber",
dependent: :destroy
has_many :liked_ads, through: :reverse_ads_subscribers
模型/用户
class User < ActiveRecord::Base
has_many :ads_subscribers, foreign_key: "liked_ad_id", dependent: :destroy
has_many :subscribers, through: :ads_subscribers
模型/ ad_subscriber
class AdsSubscriber < ActiveRecord::Base
belongs_to :liked_ad, class_name: "User"
belongs_to :subscriber, class_name: "Ad"
控制器/广告
def subscribers
@ad = Ad.find(params[:id])
@ads = @ad.liked_ads.paginate(page: params[:page])
end
控制器/用户
def liked_ads
@user = User.find(params[:id])
@users = @user.subscribers.paginate(page: params[:page])
end
数据库/ ads_subscribers
id | liked_ad_id | subscriber_id | created_at|
----------------------------------------------
1 | 29 | 3 | date |
我收到空的@users和@ads,尽管数据库已填充
答案 0 :(得分:0)
如果subscriber
是用户且liked_ad
是广告:
class AdsSubscriber < ActiveRecord::Base
belongs_to :liked_ad, class_name: "Ad"
belongs_to :subscriber, class_name: "User"
对象类:
Class Ad < ActiveRecord::Base
has_many :adssubscribers,
foreign_key: "liked_ad_id",
dependent: :destroy
has_many :subscribers, through: :adssubscribers
和
Class User < ActiveRecord::Base
has_many :adssubscribers,
foreign_key: "subscriber_id",
dependent: :destroy
has_many :liked_ads, through: :adssubscribers
然后,您将控制器方法保持原样:
def subscribers
@ad = Ad.find(params[:id])
@ads = @ad.subscribers.paginate(page: params[:page])
end
和
def liked_ads
@user = User.find(params[:id])
@users = @user.liked_ads.paginate(page: params[:page])
end