我有以下型号。我正在尝试通过包含将所有用户分配到标题列表。
返回的查询不包括仅用户的标题列表。我不懂什么?
查询:
TitleList.all(:users).where(:id => 43)
型号:
class Relationship::TitleListUserRelationship < ActiveRecord::Base
self.table_name = 'tbl_title_list_to_users'
belongs_to :title_list, :foreign_key => 'title_list_id', :class_name => 'TitleList'
belongs_to :user, :foreign_key => 'user_id', :class_name => 'User'
end
class TitleList < ActiveRecord::Base
self.table_name = 'tbl_title_lists'
has_many :user_relationships, class_name: 'Relationship::TitleListUserRelationship'
has_many :users, class_name: 'User', through: :user_relationships, source: :user
end
class User < ActiveRecord::Base
has_many :title_list_relationships, class_name: 'Relationship::TitleListUserRelationship'
has_many :title_lists, through: :title_list_relationships
end
答案 0 :(得分:0)
我不熟悉您使用的语法。如果您要查找的是与ID为TitleList
且ID为43的所有用户,您可以写下以下内容:
User.joins(user_relationships: :title_list).where(title_lists: {id: 43})
或简单地说:
TitleList.find(43).users
答案 1 :(得分:0)
TitleList.includes(:users).find(43)
where
会返回一个数组,您可以在最后处理.first
。
TitleList.where(:id => 43).includes(:users).first
或类似于你所拥有的:
TitleList.includes(:users).where(:id => 43).first
我并不认为all
可以使用参数。我尝试时看到了一个错误。
ArgumentError: wrong number of arguments (1 for 0)