我有以下型号:
project.rb
has_many :tasks
task.rb
belongs_to :project
has_many :assignments
has_many :users, :through => :assignments
user.rb
has_many :assignments
has_many :tasks, :through => :assignments
assignment.rb
belongs_to :task
belongs_to :user
例如: Project.first.title#=> “曼哈顿” Project.first.tasks.map(&:name)#=> ['寻找科学家','找钱','寻找位置'] Project.first.tasks.first.users.map(&:full_name)#=> ['James Maxwell','Evariste Galois','Jules Verne']
我的第一个问题是: 我怎么能找到所有可能带有符号的人的名字,一次尝试,我试过:
Project.first.tasks.users.full_name #=> AND FAILED
Project.first.tasks.map(&:users).full_name #=> AND FAILED
Project.first.tasks.map(&:users).map(&:full_name) #=> AND FAILED
有什么想法吗?
我认为以下问题可能在同一个球场:
如何使用条件搜索用户的'full_name'属性来查找Project?
示例
Project.all(:include => {:tasks => :users}, :conditions => ['tasks.users.full_name LIKE ?', query]) #this failed
我认为问题出在'tasks.users'上。
谢谢大家,感恩节快乐!
答案 0 :(得分:0)
对于第一个你想做这样的事情:
Project.first.tasks.map { |t| t.users.map(&:full_name) }.flatten
这样做的原因是您想要遍历所有任务,然后遍历每个任务中的所有用户。没有展平,这将给你一个二维数组。
对于第二个,你的发现应该是:
Project.all(:include => {:tasks => :users}, :conditions => ['users.full_name LIKE ?', query])
写users.full_name
意味着SQL引擎在full_name
表上寻找users
字段。