这是Ruby on Rails中数据库的结构:
用户有很多笔记
笔记有很多种类
类别有很多笔记
我已经与has_many建立了这种关系:通过。我用
current_user.notes
获取属于用户的笔记。但是,获取属于当前用户的具有特定类别的注释的最佳方法是什么?我应该像在模型上一样使用find方法吗?谢谢你的阅读。
答案 0 :(得分:0)
我认为应该是:
current_user.notes.all(:joins => :categories, :conditions => ["categories.name = ?", search_parameter])
请注意,这将使用INNER JOIN
执行查询以使用LEFT JOIN
,您应该使用:include
:
current_user.notes.all(:include => :categories, :conditions => ["categories.name = ?", search_parameter])
答案 1 :(得分:0)
class User < ActiveRecord::Base
has_many :notes
has_many :categories, :through => :notes
end
class Note < ActiveRecord::Base
belongs_to :user
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :notes
end
@ current_user.notes.all
我认为,你应该打破笔记和类别之间的多对多关系。
答案 2 :(得分:0)
你可以将一个named_scope添加到笔记
named_scope :with_categories,
lambda{|cat|
{
:joins => [:categories],
:conditions => ["categories.id IN (?)", cat]
}
}
然后你可以简单地使用
current_user.notes.with_categories(1, 2)